在浏览器中POST后重定向会导致POST请求!为什么?

时间:2012-10-23 14:01:43

标签: jquery http redirect post

这让我陷入了疯狂的边缘。 我有一个动态的形式, 这基本上是通过jquery创建的 然后通过邮件提交:

//post_form
document.body.appendChild(form);
form.submit();

但是我这样称这个脚本:

post_form(url,params);
window.location = "/myurl";

在post_form()调用之后放置window.location永远不会发送post请求,在调试的时候,我可以看到代码正在执行... 有人想给我一个理由吗?谢谢!

2 个答案:

答案 0 :(得分:3)

代码正在执行,表单将附加到文档正文,并且其提交开始,但是当您从页面重定向时,页面将与您的表单一起处理,从而中止其正在进行的提交。您已使用jQuery标记了自己的问题,但未在示例代码中使用任何实际的jQuery - 您应.serialize()使用jQuery.post()jQuery.ajax()提交表单并提交只有在jQuery调用成功回调后重定向。

答案 1 :(得分:2)

就像您提交表单一样,然后快速点击其他链接。浏览器只能执行一个“主”请求。它发送一个POST请求并使用它在响应中收到的任何内容刷新视图,或者它发送一个GET请求并刷新视图以及响应时收到的任何内容。该脚本非常快速地执行,因此第一个POST请求被取消。这两个动作都是“转到另一个页面”动作,它们不能同时发生。

执行AJAX POST请求并在完成后通过Javascript重定向,或者通过HTTP标头重定向以响应POST请求。