【发布时间】:2011-06-05 14:16:35
【问题描述】:
我有一个广泛使用 ajax 的 Rails 应用程序。使用 jQuery。例如,其中一个模型完全由 jQuery 管理:记录是由 ajaxly 创建、更新和删除的。除了更新记录之外,一切都很好。
我做了一些测试,我发现 Firefox 中的 jQuery(Mac 上的 3.6,Windows 上的 3.5 是我测试过的)在 302 重定向到相同的 URL 时检测服务器的响应有问题强>。我在 Firebug 中得到的是:
POST localhost:3000/resources/1 -> 302 找到
GET localhost:3000/resources/1 -> 200 OK
并且没有调用 jQuery 的 ajax 回调。既不成功,也不完整,也没有错误。 但是当我创建一条记录并且服务器重定向到另一个 URL 时,会调用“成功”回调:
POST localhost:3000/resources -> 302 Found
GET localhost:3000/resources/1 -> 200 OK
我自己调用 $.ajax 还是使用 jquery.form 的 ajaxForm() 都没关系。
有什么想法吗?
【问题讨论】:
-
AJAX 和重定向很难协同工作。浏览器不同,缓存可能是罪魁祸首。最简单的解决方案是消除该重定向,因为无论如何在 AJAX 中执行“POST-redirect-GET”并没有多大意义。
-
就像 kijin 所说,尝试将
cache: false附加到您的 AJAX 设置中。看看这是否有效。 -
@Anders,谢谢,但这没有用 :( 消除重定向似乎是迄今为止最好的解决方案
-
如果你能做到,是的,这将是最好的解决方案。
标签: jquery ajax http-status-code-302