Prototype.js,AJAX表单提交偶尔返回状态0,XHR保持在readyState 1

时间:2011-05-31 13:17:05

标签: ajax xmlhttprequest prototypejs form-submit

我在Prototype 1.7.0和使用form.request()的AJAX表单提交方面遇到了一个奇怪的问题。

响应状态为202或200,具体取决于服务器是否希望在超时后使用相同的表单提交再次轮询。 200表示响应内容已完成并将显示给用户(后端使用WebWork的execAndWait-interceptor执行长时间运行的作业)。

问题在于,大部分时间,一切正常。但是,有时,响应会返回状态代码0和XMLHTTPRequest readyState 1. Firebug指示正确的响应代码来自后端,并且实际响应内容很好,只是Prototype的on200和on202处理程序不会触发(on0一样)。

似乎在互联网上报告了类似的问题,但没有确凿的解决方案。这是一个众所周知的问题吗?

1 个答案:

答案 0 :(得分:0)

原型的响应代码0表示它无法与服务器通信。您可以通过在请求中添加“on0:function(){}”事件处理程序来解决此问题。

您如何处理它取决于您...要么警告用户出错,要重新显示其表单,要么静静地尝试将请求重新提交到后端循环。如果您选择第二个选项,请设置等待超时,并且每次无法与服务器通信时将其乘以某个因子,这样您就不会无限循环浏览器。

您可能还希望在客户端对这些请求进行排队,这样您就可以按顺序一次触发一个。

希望有所帮助。