Php JQuery未预期返回值
我目前正在尝试使用PHP脚本的返回值对jQuery执行刷新操作。我的PHP脚本正在做它应该做的事情,在满足特定需求时返回值reload;然而,jQuery随后会短暂地显示reload,而不会执行我要求它执行的刷新操作Php JQuery未预期返回值,php,jquery,json,Php,Jquery,Json,我目前正在尝试使用PHP脚本的返回值对jQuery执行刷新操作。我的PHP脚本正在做它应该做的事情,在满足特定需求时返回值reload;然而,jQuery随后会短暂地显示reload,而不会执行我要求它执行的刷新操作 $.ajax({ url: '/bidstatus.php', data: { sale_id: '<?php echo $sale['Product']['id']; ?>', token: '<?php ec
$.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();
}
}
});
而且,为了让它更加混乱,它有时会做它必须做的事情,但它根本不一致
那么,我遗漏了什么吗?好吧,试试这个:
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);
},
});
}
我所做的是为.success状态设置回调,而不是直接执行代码。由于Javascript异步执行代码,所以在AJAX完成之前,它只传递.success,因此数据将不会被输出,并且可能为null。您应该在那里添加一个回调,并通过回调执行它,以允许Javascript解释器完成任务。因为我看到它仍然处于打开状态,并且我自己设法修复了它,所以我将发布代码,以便它可以/可能帮助其他有类似问题的人 这就是修复它的代码
$(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);
});
如果您没有返回json值,请将数据类型更改为text他正在使用json_encode。为什么这不起作用呢?如果您在成功中使用console.logoutput会怎么样?就像预期的那样,有时我会得到一个空值,这也是PHP脚本可以返回的;然而,这仍然意味着它应该只在重新加载字符串返回时刷新。我的建议是让您的PHP脚本始终返回一致的内容,如true或false或特定字符串。console.log日志是否作为简单字符串重新加载?向我们展示输出。还可以看看jQuery.ajax函数的缓存设置。好吧,不要使用json,使用默认类型,然后它就会工作。很抱歉,即使将其更改回默认类型也不起作用。如果您的请求是get,请将其设置为POST并重试。问题不在于数据类型或请求类型。它可以使用json、GET、POST,这只取决于PHP如何处理请求。OP没有说没有返回任何内容。事实上,我的PHP会像它应该返回的那样返回单词reload。
do_ajax(function(data) {
if (data == "reload") {
location.reload();
}
}
);
$(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);
});