2014-12-05 66 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>