JQuery没有预料到返回值

时间:2014-08-06 09:15:50

标签: php jquery json

我目前正在尝试使用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"); 

另外,为了让它更加混乱,它有时会做它必须做的事情,但它根本不一致。

那么,我错过了什么吗?

2 个答案:

答案 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完成任务。