【发布时间】:2021-02-24 09:23:27
【问题描述】:
我有一个 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 代码部分所示,我尝试获取它,但是当我使用警报输出变量时,我得到的只是“未定义”。
请帮忙。
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代码中访问。
【问题讨论】:
-
在回显之前需要将数组编码为 JSON
-
@ADyson 抱歉,我没有添加,让我试试。
-
@ADyson php版本在
-
@ADyson 我尝试添加 session_start();,但它仍然输出未定义。
-
php version in < 5...那你需要紧急升级。你已经多年没有支持了。 php.net/supported-versions.php 。我想你必须手动制作 JSON,或者找到一个 polyfill。直接在 PHP 中回显一个数组只会产生一个警告(或者什么都不会,如果警告被关闭,或者设置为记录到文件中),因为它不能直接将数组转换为字符串(即使可以,它仍然不是 Javascript 可以读取的有效 JSON)。