我有以下AJAX调用,最多需要20秒才能完成。我希望用户可以在此呼叫正在加载且未完成时离开站点。
但是,当用户单击链接或“后退”按钮时,站点将等待呼叫结束,然后再将用户重定向到用户单击的上一个站点或链接
$.ajax({
url: 'index.php?route=sale/order/getSupportTickets&token=<?php echo $token; ?>&email=<?php echo $email; ?>',
dataType: 'json',
success: function(json) {
//do stuff here
}
});
答案 0 :(得分:2)
AJAX调用与常规HTTP调用没有什么不同(它只是在后台进行)。因此,服务器仍在执行此调用(getSupportTickets)。
听起来您的Web服务器实际上正在阻塞(即您没有任何线程支持或CPU处于100%繁忙状态),这给了您这种阻塞呼叫的感觉
答案 1 :(得分:1)
在ajax调用中,一旦获得所需会话的数据,请使用session_write_close();
。
只有1个php脚本可以与1个php会话同时运行,会话被“锁定”到当前脚本。使用session_start()
的脚本将在该指令上被阻止,直到释放会话为止。
如果您使用session_write_close();
释放会话,那么您的ajax脚本将能够继续,而新的请求将能够访问该会话(这是被阻止的)。