让我进行这个 ajax 调用:
App.prototype.askServer= function(obj) {
return $.ajax({
type: "POST",
dataType: 'json',
url: 'php/ajax.php',
data: {
stuff: obj
}
}).success(function(data) {
console.log(data);
});
}
我的 ajax.php 看起来像这样:
<?php
$stuff = $_POST['stuff'];
// execute curl that takes 1 second
echo $response
// parse $response through multiple loops and save into files and databases
// takes 5 seconds
?>
一旦 PHP 脚本 echo
有内容,ajax 回调就会执行吗?或者它会等待整个 PHP 脚本被执行?换句话说:我的ajax回调会在1秒或6秒后执行吗?
我问的原因是因为我从 curl
中获得了相当大的 JSON。我想将其返回到 ajax 回调,然后我想将这些数据分开,将一些内容保存到数据库中,将其他数据保存到 JSON 文件中,等等。这需要一段时间,但客户端没有必要等待。
最佳答案
可以在 PHP 继续执行脚本时提前关闭连接。
您需要在 PHP 脚本中定义 ignore_user_abort(true);
并在 echo $response;
之后调用 flush();
脚本继续执行,但连接将关闭,导致 Ajax 回调执行。
关于javascript - echo'ing 到 AJAX 回调后执行 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28167246/