我有以下要每5秒运行的ajax请求。为了测试它,我只设置了几个警报。我在成功内部设置了一个alert('hello');
,它每5秒触发一次。这样行得通。
if(response.update==true){
部分无效。
我正在设置
<?php $data['update'] = "true"; return $data; ?>
在ajax网址文件中。
我做错什么了吗?这是不正确的方法吗?我想念什么吗?
我什至尝试在ajax中设置datatype: json,
并在ajax url中返回return json_encode($data);
,但没有成功。
<script type="text/javascript">
$(document).ready(function(){
/* AJAX request to checker */
setInterval(
function (){
$.ajax({
type: 'POST',
url: '<?php echo http() . $websitedomain .'/Manage/order_management/search_orders_checker.php'; ?>',
datatype: html,
data: { counter:10 },
success: function(response){
if(response.update==true){
alert('yes');
}
}
})
},5000);
});
</script>
控制台日志现在正在报告json响应。但是if (response.update == "true") { alert('yes'); }
仍然无法正常工作。
console.log响应:{"update":"true"}
,并且每5秒更新一次,如预期的那样。
答案 0 :(得分:0)
夫妇的事情在这里看起来不正确。首先...
<?php $data['update'] = "true"; return $data; ?>
如果这是您返回数据的方式,那么这不返回json。您需要将关联数组编码为json,然后将 echo 编码为标准格式。
<?php $data['update'] = "true"; echo json_encode($data); ?>
一旦有了,就可以使ajax请求期望响应为json。
$.ajax({
type: 'POST',
url: '<?php echo http() . $websitedomain .'/Manage/order_management/search_orders_checker.php'; ?>',
//dataType tells ajax to auto-parse the json response into an object
dataType: 'json',
data: { counter:10 },
success: function(response){
if(response.update==true){
alert('yes');
}
}
})
答案 1 :(得分:0)
要使它正常运行,您需要具备以下所有条件:
1)PHP:
您需要
true
而不是字符串"true"
这是该代码的新代码:
<?php
$data['update'] = true;
echo json_encode($data);
?>
2)JavaScript:
您需要将datatype: html
更改为dataType: "json"
这是因为
html
之前,它实际上是对不存在的变量的引用JSON.parse()
在回调中。