我目前正在尝试使用PHP脚本的返回值来使用jQuery执行刷新操作。我的PHP脚本正在做它应该做的事情,返回值" reload"满足某一要求时;然后jQuery显示"重新加载"简单地说,并没有按照我要求它做的刷新操作。
$.ajax({
url: '/bidstatus.php',
data: {
sale_id: '<?php echo $sale['Product']['id']; ?>',
token: '<?php echo md5(session_id().$session->read('Auth.User.id')); ?>'
},
dataType: 'json',
type: 'get',
success: function(output) {
if (output == "reload") {
location.reload();
}
}
});
当满足要求时,返回值的PHP如下所示:
echo json_encode("reload");
另外,为了让它更加混乱,它有时会做它必须做的事情,但它根本不一致。
那么,我错过了什么吗?
答案 0 :(得分:0)
因为我看到它仍然是开放的,我自己设法修复它,我会发布代码,以便它可以/可能帮助其他类似问题。
这是修复它的代码。
$(document).ready(function() {
$.ajaxSetup({ cache: false });
setInterval(function()
{
$.post('/bidstatus.php',
{
auction_id: '<?php echo $sale['Product']['id']; ?>',
token: '<?php echo md5(session_id().$session->read('Auth.User.id')); ?>'
},
function(data)
{
if(data == "reload"){
location.reload();
}
else{
$('#shop-balance').html(data);
}
}
);
}, 1000);
});
答案 1 :(得分:-1)
好吧,试试这个:
function do_ajax(callback)
{
$.ajax({
url: '/bidstatus.php',
data: {
sale_id: '<?php echo $sale['Product']['id']; ?>',
token: '<?php echo md5(session_id().$session->read('Auth.User.id')); ?>'
},
dataType: 'json',
type: 'get',
success: function(data){
callback(data);
},
});
}
再次检查它,如果使用任何全局范围变量,则将其传递给函数的参数。
并将其称为::
do_ajax(function(data) {
if (data == "reload") {
location.reload();
}
}
);
我所做的是为.success状态设置回调,而不是直接执行代码。由于Javascript异步执行代码,它只是在AJAX完成之前传递.success,因此,数据不会被“输出”并且可能是“null”。你应该在那里添加一个回调并通过回调执行它,以允许Javascript Interpreter完成任务。