$ .ajax调用执行许多操作的PHP页面。 我希望我的用户可以在PHP脚本收到请求后关闭页面。
我如何知道脚本何时收到请求?
像...一样的东西。
$.ajax({
url: "/my-huge-script",
type: "POST",
...
...
afterSend: function(){
alert('The script has received the request. You can close the browser.');
}
}
提前致谢,抱歉我的英语不好。
我试过了:
JS:
$.ajax({
url: "/huge-page",
dataType: "json",
type: "POST",
data: {
... LARGE DATA! (base64 file)
},
success: function() {
alert('The script has received the request. You can close the browser.')
}
})
HUGE-page.php文件
<?php
header('Content-Type: application/json');
echo json_encode(array('Success' => "get it"));
... MANY operations ...
?>
但'成功'仅在PHP脚本结束时触发..
发送到PHP页面的$ _POST数据大小不一,因此我希望用户知道请求何时完成...无需等待PHP脚本的结束。
答案 0 :(得分:1)
好吧,您可以在json
页面打印一些huge.php
。
在您的页面顶部,您可以执行类似的操作
echo json_encode(array('succes' => "get it"));
你应该使用:
success: function(response){
//...
}
并在success
调用ajax
函数中,检查您是否收到此消息,然后在此处添加alert
。
答案 1 :(得分:0)
尝试你的HUGE-PAGE.php文件:
<?php
header('Content-Type: application/json');
// operations should before output
// so =>
... MANY operations ...
// output at end of the file and exit()
// so =>
echo json_encode(array('Success' => "get it"));
exit();
?>
答案 2 :(得分:0)
我认为Jquery ajax的always()回调函数对你有用。请参阅下面的示例代码。
var jqxhr = $.ajax( "example.php" )
.done(function() {
alert( "success" );
})
.always(function() {
alert( "complete" );
});
jqXHR.always(function(data | jqXHR,textStatus,jqXHR | errorThrown){ });完整回调选项的另一种结构,即 .always()方法替换了已弃用的.complete()方法。
响应成功的请求,函数的参数是 与.done():data,textStatus和jqXHR对象相同。对于 失败的请求参数与.fail()的参数相同: jqXHR对象,textStatus和errorThrown。参考deferred.always() 有关实施细节。
只是提醒一下成功回调方法是折旧的,你需要使用.done()而不是success()回调函数。