【发布时间】:2012-10-29 21:07:03
【问题描述】:
我正在尝试在不修改后端的情况下对旧网站表单进行 AJAX 化。最初,后端在收到表单后会响应“302 Moved”重定向到“thank you”页面。
现在,当我尝试使用 jQuery $.ajax 调用提交表单时,表单数据已成功提交,但“302 Moved”重定向似乎被浏览器取消,并且 jQuery 不知道发生了什么.
我的问题是,无论发生什么,$.ajax调用都会返回错误并且status = 0,所以我无法区分提交成功和错误。
有没有办法阻止浏览器尝试跟随重定向,或者至少取回正确的响应代码? (我正在使用 Chrome。)
【问题讨论】:
-
任何不成功的事情对 jQuery 来说都是失败的。但是,您可以编写错误处理代码以正确返回 500 状态代码,然后您可以假设其他任何内容都是重定向。
-
或者,您可以对表单处理程序页面进行编码,以检查它是否是 ajax 请求,如果是,则不要重定向。
X-Requested-With -
好主意,尽管我正在尝试在不更改遗留后端的情况下做到这一点。
-
考虑到这一点,做一些会故意抛出 php 错误并查看它返回的内容。它可能已经返回 500
标签: jquery ajax google-chrome http-status-code-302