我有一个ajax请求,需要1分钟才能得到回复。用户输入的数据将在该请求中提交。
所以我要像这样向客户展示两条成功消息。
1)"数据成功提交"在ajax将数据发送到服务器而没有收到立即响应之后。如果它立即收到回复,那肯定是一个错误。 2)现在,用户可以在同一页面中等待查看第二个成功消息"文件生成成功"在服务器中完成长时间的流程后,他可以导航到其他页面,甚至可以退出。但它不会影响服务器中运行的进程,因为它将是在一个单独的线程中运行的异步进程。
但我不知道如何识别ajax已将数据发送到服务器但等待接收响应?我可以通过
简单地显示成功消息function sendData(){
$.ajax({
url: ...,
type: ...,
data: ...,
success: function(data){
$("#success-message").html("File genration sucessfull");
}
});
$("#success-message").html("Data successfully submitted");
}
但"数据已成功提交"即使客户端与互联网断开连接也会显示。这就是为什么我需要展示这个"数据成功提交的原因"当ajax处于挂起状态以接收响应时ajax请求之后的消息。
答案 0 :(得分:2)
我认为您可以使用当前的解决方案,只需确保编写错误处理程序。如果用户与Internet断开连接,错误处理程序将在函数返回后几乎立即触发,因此浏览器很可能甚至不会呈现成功消息。
E.g:
function sendData(){
$.ajax({
url: ...,
type: ...,
data: ...,
error: function(data){ // callback triggers almost directly after returning
// "success-message" not a very good name
$("#success-message").html("Error occurred");
},
success: function(data){
$("#success-message").html("File generation successful");
}
});
$("#success-message").html("Data successfully submitted");
}
答案 1 :(得分:0)
如果你的ajax是异步async:true;
你总是有回电活动。
如,
success: function (json) {
console.log('success:'+json)
},
complete: function (msg,a,b) {
console.log('complete :'+msg)
},
error : function(msg,a,b){
console.log('error:'+msg);
}
有关更多参考,请参阅http://api.jquery.com/jquery.ajax/