我有一个简单的jquery函数,它将一个post请求发送到这样的PHP文件:
$.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文件的其余部分之前提醒完成的操作?
由于
答案 0 :(得分:1)
可以使用普通的Javascript ajax。在请求完成之前收到数据时,onreadystatechange
事件将以readyState
3触发。
在下面的示例中,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,this answer建议jQuery允许你绑定到readystatechange
,但我还没有测试过它。