我想知道是否有一种简单的方法来取消 AJAX 请求?
除了在客户端上对 XMLHTTPRequest 调用 "abort" 之外,是否有一种更容易停止服务器进程的方法?服务器正在使用 Apache。
谢谢
我想知道是否有一种简单的方法来取消 AJAX 请求?
除了在客户端上对 XMLHTTPRequest 调用 "abort" 之外,是否有一种更容易停止服务器进程的方法?服务器正在使用 Apache。
谢谢
不,绝对没有简单的方法。
我可以想到一些复杂的方法,但它们很不可靠。
你可能会更有运气地开发一个过程来撤销你刚刚运行的请求所做的更改(我假设这是你想停止它的原因)。
发起另一个Ajax请求。我通过尝试找出如何防止在调用另一个请求时中断先前的请求而找到了这个线程。
没有好的方法可以通过网络停止请求本身(正如许多人所说),但相对容易停止请求的影响。例如:
在服务器端:您可以通过不断检查充当标志的全局变量(如cookie或会话,假设这些在脚本执行期间会更改)来退出(或使用您需要的任何术语来终止脚本)。此外,您还可以将文件或数据库条目保留为标志(可以轮询其是否存在)。
在客户端:您可以调用abort
(并非所有浏览器都适用,正如其他人所说),或者您可以在回调顶部保留全局信号量/标志(检查全局值以查看它是否仍应执行)。例如:
window.ajaxIsStillGood = true;
xhr.onreadystatechange = function( )
{
if( 4 === xhr.readyState && 200 === xhr.status )
{
if( true === window.ajaxIsStillGood ){ /* still good */ }
}
}
/* bad stuff happens */
window.ajaxIsStillGood = false; // now the code won't execute
session_write_close();
停止或中止的方法。只需将其放在脚本中session_start()
后面即可。如果您正在使用框架或OOP,则将其保留为您方法的第一行。这是因为会话数据在ajax完成之前被锁定。xhr.abort()
解决方案提示在这里找到
使用jQuery中止Ajax请求
你可以发送另一个 Ajax 请求来改变特定的 $_SESSION
变量,这个变量会被那个长时间运行的进程监控。