Php 无法在动态javascript文件中访问会话变量
我知道我的问题很奇怪,但这是我的处境。我正在用Php 无法在动态javascript文件中访问会话变量,php,javascript,session,dynamic,session-variables,Php,Javascript,Session,Dynamic,Session Variables,我知道我的问题很奇怪,但这是我的处境。我正在用 另一方面,我在jscript.php中编写javascript <?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
另一方面,我在jscript.php中编写javascript
<?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
?>
});
$(文档).ready(函数(){
....
....
....
警报('hello world!');//我所有的javascript内容
});
然后我用我的浏览器进行了测试,文件调用和类似于
alert('hello world!')
的调用都没有问题,但在我尝试从jscript.php访问会话变量之前,它都是空的。。。我确实正确设置了这些变量我不确定这是否可行
我认为更好的方法是对PHP页面进行ajax调用,以您想要的任何形式(json,或者只是echo$var…)返回数据,然后对其进行处理
带jquery的ex:
<script>
$.ajax({
url: 'mypage.php',
}).done(function(msg) {
// Do something with msg here
});
</script>
$.ajax({
url:'mypage.php',
}).done(函数(msg){
//在这里加味精
});
而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获得,并对其执行任何需要的操作。添加一个session start一个非常开始的jscript.php解决了我的问题
session_start();
希望它能帮助其他人。请让我知道我是否可以使用更好的术语。您不是在jscript.php文件的开头说
session\u start()
。请检查是否发送了cookie。还要检查php.ini中是否启用了session.auto\u start
in,或者调用session\u start()
as@mohkhan sugested。感谢大家指出session\u start(),现在我必须再次调用session\u start,因为调用了jscript.php,它现在工作得很好,谢谢!