1

我有一个简单的 jquery 函数,它向 PHP 文件发送一个 post 请求,如下所示:

$.post('/file.php',
{
     action: 'send'   
},

function(data, textStatus)
{     
     alert(data);
});

还有一个 PHP 文件:

<?php

/* Some SQL queries here */

echo 'action done';

/* echo response back to jquery and continue other actions here */

?>

默认情况下,jQuery 会等到执行整个 PHP 脚本后再发出警报。有没有办法在执行 PHP 文件的其余部分之前提醒已完成的操作?

谢谢

4

1 回答 1

1

使用纯 Javascript ajax 是可能的。当请求完成之前接收到数据时,该onreadystatechange事件将以 3 触发。readyState

在下面的示例中,newData将包含新的数据。我们必须做一些处理,因为 XHR 实际上给了我们到目前为止的全部数据responseText,所以如果我们只想知道新数据,我们必须记录最后一个索引。

var httpRequest, lastIndex = 0;

if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 8 and older
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}

httpRequest.onreadystatechange = function() {
    if(httpRequest.readyState === 3) {
        var newData = httpRequest.responseText.substring(lastIndex);
        lastIndex = httpRequest.responseText.length;

        console.log(newData);
    } 
};

httpRequest.open('POST', '/file.php');
httpRequest.send('action=send');

至于 jQuery ajax,这个答案表明 jQuery 可以让你绑定到,readystatechange但我还没有测试过。

于 2013-07-01T12:54:20.297 回答