一个ajax调用阻止其他ajax调用
加载页面后,我对php脚本执行Ajax调用,该脚本会更新我的服务器。 但是这个脚本有时可能需要一分钟才能完成,而且在脚本运行时,我无法执行其他需要处理的Ajax调用 – 即第一个Ajax调用不应该中断其他Ajax调用。 知道怎么做吗?
第一个Ajax调用:
$(document).ready(function () { $.ajax({ url: "checkForUpdatesByCoach.php", success: function(arg){ if(arg == "200"){ $('body').prepend("Dine hold er blevet opdateret.Tryk for at opdatere!").fadeIn("slow"); } } }); });
第二次Ajax调用(用户触发的调用):
$.ajax({ type: "POST", data: {data:dataAjax}, url: "updateSwimmer1.php", success: function(arg){ //updating UI } });
adeno上面的评论是正确的。
“在PHP中,一次只有一个脚本可以在同一个会话上运行,以便不会覆盖会话数据等。因此,当在同一个会话中对PHP脚本执行两次ajax调用时,第二个必须等待第一个完成”
为了帮助加快速度,您可以提前写入和结束会话(session_write_close())以释放会话锁定并允许使用会话的其他脚本继续。
注意:在调用session_write_close之后,您仍然可以从$ _SESSION变量中读取,但是您可能不再写入它。
你可以在这里找到一个很好的例子: PHP会话锁 – 如何防止阻止请求
从上面的链接提供的示例: