JQuery不预测返回值


JQuery not anticipating on return value

我目前正在尝试使用PHP脚本的返回值与jQuery进行刷新操作。我的PHP脚本正在做它应该做的事情,当满足一定的要求时返回值"reload";然而,jQuery会短暂地显示"reload",而不会执行我要求它执行的刷新操作。

$.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"); 

而且,更令人困惑的是,有时它做了它必须做的事情,但它根本不一致。

那么,我错过了什么吗?

既然我看到这个仍然是开放的,我设法自己修复它,我将发布代码,这样它可以/可能帮助其他人有类似的问题。

这是修复它的代码。

$(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); 
});

试试这个:

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,因此,数据不会"输出",可能是"空"。您应该在那里添加一个回调,并通过回调执行它,以允许Javascript解释器完成任务。