ajax提交表单重定向不行,如果浏览器被重定向,它们不会在ajax调用中重新发送表单数据?...

我一直在修改我的网站上的URL重写和修正我的URL的规范化(所以我没有在搜索引擎等重复数据),并建议无处不在或总是删除/强制结尾斜杠(我选择删除它),也重定向/索引。所以我把下面的两个规则在我的.htaccess为Apache的mod_rewrite回暖:如果浏览器被重定向,它们不会在ajax调用中重新发送表单数据?

--remove斜线

RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]

--remove尾随/指数

RewriteRule ^(.*)/?index$ http://%{HTTP_HOST}/$1 [R=301,L]

这些规则工作在浏览器中很好。但是,我的一些ajax表单突然停止运行!我在Chrome和Firefox(Firebug)中找到了它,发生的事情非常奇怪。在这两种浏览器,页面做一个AJAX调用:

/ajax/index (ajax params intact) --> 301 redirect to /ajax/

/ajax/ (ajax params are no longer sent!) --> 301 redirect to /ajax

/ajax (ajax params again not sent) --> 200 OK but obviously script complains that params don't exist

任何人都可以证实,这种情况还是我失去了它?如果是这样,为什么它会这样呢?是否有一个适当的解决方案来修复它(除了改变我所有的Ajax调用永不会重定向,例如/ajax)?

非常感谢您为您的时间家伙:)

干杯

阿里

2010-07-31

Ali