提问人:Akhil paul 提问时间:2/24/2021 最后编辑:Akhil paul 更新时间:2/25/2021 访问量:43
如何访问模板文件中的php会话数据jquery代码
How to access php session data inside template files jquery code
问:
我有ajax,它从模板文件调用一个名为“fetch_quarter_limit.php”的php文件。
$.ajax({
type: 'POST',
url: 'fetch_quarter_limit.php',
data: {
leavefrom: from,
leaveto: to,
empid: emp
},
success: function(data) {
var quarter_limit = data['myVar'];
alert(quarter_limit);
}
});
在我的 .php 文件中,我尝试将会话数据作为数组返回。 获取所需的数据,存储在会话中并形成数组。
$_SESSION['quarter_limit_mend'] = $quarterLimit;
$returnVal = array('myVar' => $_SESSION['quarter_limit_mend']);
echo $returnVal;
如上面的ajax代码部分所示,我试图获取它,但是当我使用alert输出变量时,我得到的只是“未定义”。
请帮忙。
Ajax 代码已更新,p2:
添加 dataType 会使代码不起作用。
$.ajax({
type: 'POST',
url: 'fetch_quarter_limit.php',
dataType: 'json',
data: {
leavefrom: from,
leaveto: to,
empid: emp
},
success: function(data) {
alert(data);
}
});
如@Tim所述,我已将自定义 json 编码函数添加到我的.php文件中。 它按预期返回 {“myVar”: 2}
echo array_to_json($returnVal);
这是从 php 文件返回的。 但无法在 ajax 代码中访问。
答:
1赞
Tim
2/24/2021
#1
您正在数组上使用 echo,这是不可能的。如 PHP 手册中所述,echo 输出一个或多个字符串。
通常你会在阵列上使用,然后将其输出到屏幕上。但正如你所评论的,你正在使用 php < 5。首先,如果可能的话,您应该考虑升级到 PHP > 7,因为这不仅可以提高性能,还可以提高安全性。json_encode()
如果您无法升级到 PHP 5 以上的 PHP 版本,则可以使用解决方法。关于这个问题,已经有了解决方法的答案,解决方法可以在PHP手册中找到。
您应该能够使用返回的 JSON 数据。
评论
0赞
Akhil paul
2/24/2021
我从讨论中添加了方法。 通过这条路。但是没有成功的回报。当我从 ajax 代码中删除时,警报返回为 undefined。我错过了什么吗?echo array_to_json($returnVal);
dataType: 'json',
0赞
Tim
2/24/2021
尝试对数据使用 console.log( 而不是警报,并在控制台中查看它返回的内容。 @Akhilpaulconsole.log(data);
0赞
Tim
2/24/2021
在jQuery中,JSON会自动转换为对象。因此,要获得价值,请做或dataType: 'json'
myVar
console.log(data.myVar)
alert(data.myVar)
0赞
Tim
2/24/2021
如果未调用成功,则可能存在错误。可用于获取错误响应error: function() {}
0赞
Roboroads
2/25/2021
#2
编辑后回复
所以你现在有你的数据作为JSON,但JS仍然会把它看成一个字符串。在成功函数中,您仍然需要解析它。
success: function(data) {
jsonData = JSON.parse(data);
alert(jsonData.myVar);
}
我还必须补充一点,继续使用 php < 7.3 是非常不安全的(截至今天,2021 年 2 月 24 日)
评论
php version in < 5
...那么你需要紧急升级。你已经多年没有支持了。php.net/supported-versions.php .我想你必须手动制作JSON,或者找到一个polyfill。直接在 PHP 中回显数组只会产生警告(或者如果警告被关闭或设置为记录到文件,则不会产生任何警告),因为它无法直接将数组转换为字符串(即使可以,它仍然不是 Javascript 可以读取的有效 JSON)。