0

这把我带到了疯狂的边缘。我有一个动态表单,它本质上是通过 jquery 创建的,然后通过 post 提交:

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

但我这样称呼这个脚本:

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

将 window.location 放在 post_form() 调用之后永远不会发送发布请求,当调试时,我可以看到代码正在执行......有人愿意给我一个原因吗?谢谢!

4

2 回答 2

3

代码正在执行,表单被附加到文档正文,并且它的提交开始,但是在您重定向离开页面的那一刻,页面与您的表单一起被处理,这将中止其正在进行的提交。您已经标记了您的问题,jQuery但您没有在示例代码中使用任何实际的 jQuery — 您应该.serialize()使用表单并提交它,jQuery.post()或者jQuery.ajax()仅在 jQuery 调用成功回调后重定向。

于 2012-10-23T14:08:39.243 回答
2

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

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

于 2012-10-23T14:08:50.257 回答