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

时间:2013-08-09 22:17:40

标签: php jquery ajax

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

目前我正在使用标准.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'

1 个答案:

答案 0 :(得分:0)

我在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};

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


我唯一可以想到的是,如果你需要尝试按顺序进行操作就可以使用了 冲洗:

How to flush output after each `echo` call?

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