使用jquery.post-ajax进行多次回调


multiple callback using jquery .post ajax

是否可以使用jQuery .post将图像ajax上传到php来获得多个回调
我正在通过二进制字符串将图像发送到服务器进行处理,并希望在图像上传后显示前端显示状态,然后显示处理图标。

目前我使用的是standard.post,但理想情况下这就是我想要的场景-
jquery:

$.post( 'process.php', { myvar:myvar}, function(data){
    if(data=='callback_1'){
        // process 1
    }else if(data=='callback_2'){
        // process 2
    }
}); 

php:

$myvar = $_POST['myvar'];
// after process 1
echo 'callback_1'
// after process 2
echo 'callback_2'

我在php脚本中设置了一个数组

$r['callback_one'] = 'complete';
$r['callback_two'] = 'fail';
echo json.encode($r);

javascript:

r = JSON.parse(data);
if (r.callback_one === 'complete){//do something};

当然,这仍然会同时发送回调,这可能不是你想要的。


如果你需要尝试按顺序获取东西,我唯一能想到的就是使用冲洗:

如何在每次"echo"调用后刷新输出?

ob_end_flush();
# CODE THAT NEEDS IMMEDIATE FLUSHING
ob_start();

甚至可能发生的情况是,客户端不会从服务器接收数据包,直到服务器建立了足够的字符来发送它认为值得发送的数据包。

老答案:

您可以使用ob_implicit_flush,它将告诉输出缓冲关闭一段时间:

ob_implicit_flush(true);
# CODE THAT NEEDS IMMEDIATE FLUSHING
ob_implicit_flush(false);