2013-07-25 64 views
0

我知道我的問題很奇怪,但這是我的情況。我打電話一個的JavaScript會話變量不能訪問動態JavaScript文件內

<script src="js/jscript.php"></script>

而在另一方面我寫的JavaScript內jscript.php

<?php 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
header("Content-Type: text/javascript"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); 
header("Pragma: no-cache"); 
?>$(document).ready(function(){ 
.... 
.... 
.... 
alert('hello world!');//all my javascript stuff 

<?php 
echo $_SESSION['user_id']; //echo nothing 
echo $_SESSION['user_email']; //echo nothing 
?> 

}); 

然後我用我的瀏覽器進行測試,文件呼籲那些通話像alert('hello world!')沒有問題,但直到我試圖接入會話變量從jscript.php,它的所有空......我沒有正確設置這些變量

+0

請讓我知道,如果我可以使用更好的術語 –

+2

你不是說'session_start()'在jscript.php文件的開頭。 – mohkhan

+1

請檢查是否發送了Cookie。同時檢查'php.ini'中啓用的'session.auto_start'或者將'session_start()'調用爲@mohkhan。 – twil

回答

0

添加會話啓動jscript.php的最開始解決我的問題

session_start(); 

希望其幫助他人。

1

我不確定這可以工作。我想一個更好的方法是將ajax調用到PHP頁面,以任何你想要的形式獲取數據(json,或者只是echo $ var ...),然後用它做一些事情。

前用jQuery:

<script> 
    $.ajax({ 
     url: 'mypage.php', 
    }).done(function(msg) { 
      // Do something with msg here 
    }); 
</script> 

和mypage.php可能是這樣的:

<?php 

$response = array(); 
$response['user_id'] = $_SESSION['user_id']; 
$response['user_email'] = $_SESSION['user_email']; 
echo json_encode($response); 

?> 

當AJAX調用時,PHP頁面會創建一個數組,與會話填充你需要的變量,並用json_encode以json形式將它返回給你的腳本。 您可以將它作爲.done方法中的var來使用,並根據需要做任何事情。

+0

感謝您的選擇 –