2014-12-05 20 views
0

我正在使用一些PHP會話和數組數據,我在Laravel 4視圖中篩選到JS中。目前,在javascript部分中的php ooks是這樣的。如何將會話php數據從PHP轉移到JS

<?php $number_of_posts = 7; ?>; 
    <?php $_SESSION['posts_start'] = isset($_SESSION['posts_start']) ? $_SESSION['posts_start'] : $number_of_posts; ?>; 

    var start = {{ Session::get('posts_start', 7) }}; 
    var initialPosts = <?php echo Fanfollow::follows_json(Auth::user()->get()->id,0, $_SESSION['posts_start']); ?>; 
    var desiredPosts = <?php echo $number_of_posts; ?>; 

這工作得很好,但我想我的JavaScript移動到外部JS文件,而不是混合PHP和JS。

我的問題是,我如何使用上面的PHP並使用js訪問而無需直接在js中使用PHP。

一個例子是使用HTML隱藏輸入視圖像這樣:

<input type="hidden" id="num_posts" name="num_posts" value="{{$number_of_posts}}"> 

,然後用JS拉:

var number_posts = $('#num_posts').val(); 

可以類似的東西來爲我的代碼完成以上? (會話和陣列中的數據?)

+0

爲什麼會被預先存儲在會話或陣列製作與將它打印到HTML源代碼的能力有什麼不同? – Quentin 2014-12-05 21:30:26

+0

你應該爲這個問題添加一個jQuery標籤。 – vcanales 2014-12-05 21:38:45

+0

在Laravel內部沒有理由使用isset($ _ SESSION [])。如果您想檢查Session數據是否存在,您應該使用Session :: has('key_here')。 – 2014-12-05 21:50:23

回答

0

剛剛從你的模板系統

<script> 
var number_posts = {{$number_of_posts}}; 
</script> 

而且任何JavaScript代碼回顯值將使用number_posts應該是上面的代碼之後。

+0

這在外部JS文件中不起作用。 – user1072337 2014-12-05 21:42:52

0

如果你真的,真的真的想做到這一點,你可以在

window.YOUR_SESSION_VARIABLE 

和呼叫II存儲在外部js文件的會話數據。

0

我用ajax做到這一點。我創建get_session.php:

<?php 
    session_start(); 
    echo json_encode($_SESSION); 

然後:

$.ajax({ 
    url: 'get_session.php', 
    dataType: 'json', 
    method: 'POST', 
    success: function(data) { 
     // do stuff with session data 
    } 
}); 
0

你可以把你的JavaScript/PHP搭配這樣

<script type="text/javascript" src="myscript.php"></script>