离开页面时 Ajax 请求是不是仍然完成?
Posted
技术标签:
【中文标题】离开页面时 Ajax 请求是不是仍然完成?【英文标题】:Do Ajax requests still finish when leaving the page?离开页面时 Ajax 请求是否仍然完成? 【发布时间】:2013-05-07 06:35:08 【问题描述】:我有一个需要运行一些 php 的情况,特别是我需要发送一个 SOAP 请求并等待响应,然后对此进行处理,但是有时这些请求可能很慢并且最多需要 9秒。
现在我真的不希望用户坐在那里等待 9 秒以完成此操作。
基本上用户流是..
用户进入支付页面 用户点击按钮通过支付网关(Paypal)支付 然后用户返回到站点(SOAP 请求以及在此阶段需要完成的所有工作)我曾考虑使用 Paypal IPN 通知来运行它,但后来认为在用户返回网站时它不会完成。
所以,我想知道我是否可以在用户通过 Ajax 访问第一页时发出呼叫,并在用户提交付款时运行它,并且在他们返回网站时应该完成 - - 如果他们最终没有完成付款,这没什么大不了的,所以我不担心在确认付款之前运行此代码。
我的问题是,如果我将其关闭以通过 AJAX 运行,如果用户在页面完成之前离开页面,代码是否仍会执行?如果没有,有什么想法吗?
【问题讨论】:
在 ajax 完成之前不要将它们发送到贝宝。 这样您就可以确认ajax请求已成功发送和接收,没有任何问题。另外,假设您正在发送 Ajax 请求并同时将它们发送到贝宝;您不希望 ajax 请求不发送(因为竞争条件) @kennypu 我不会同时这样做。一旦他们进入支付页面,该功能就会运行,然后他们就可以点击支付按钮。 :) 在这种情况下,您不必担心任何事情,特别是如果您没有从 ajax 请求返回任何内容,而只是发送了一些内容。 【参考方案1】:一旦请求发送到服务器,无论您是否离开页面,请求的服务器端都会完成。
唯一不会发生的是客户端回调方法的执行。
【讨论】:
好的,没什么需要发回给客户端的,所以我猜应该是安全的:)【参考方案2】:如果您使用 php ,则有一个 php.ini 设置 ignore_user_abort
告诉 php 当客户端中止请求时该做什么。
默认值为 false。
http://www.php.net/manual/en/misc.configuration.php#ini.ignore-user-abort
【讨论】:
以上是关于离开页面时 Ajax 请求是不是仍然完成?的主要内容,如果未能解决你的问题,请参考以下文章