Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JQuery未预期返回值_Php_Jquery_Json - Fatal编程技术网

Php JQuery未预期返回值

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

我目前正在尝试使用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();
        }
    }
});
而且,为了让它更加混乱,它有时会做它必须做的事情,但它根本不一致

那么,我遗漏了什么吗?

好吧,试试这个:

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