0

我有一种情况,我想同时将表单数据发布到 2 个不同的位置。我无法控制这些位置,它们是跨域的。我在这里找到了以前的帖子,使用 iframe,我现在找不到,我已经合并了。它每次都提交给第一个,但第二个只有 25% 的时间被提交。我需要它在所有主要浏览器中更可靠地工作。尝试使用 ajax 但无法让它在 IE 中跨域工作,尝试了这个论坛中提出的许多解决方案。谢谢。埃德

<form name="myForm" method="post" action="http://www.firstwebsite.com" onsubmit="return submit2nd()"  >
<input type="email" name="email" value='' />
<input type="submit" name="submit" />
</form>
<script>

function submit2nd(){
var x=document.forms["myForm"]["email"].value;
var iframe = document.createElement("iframe");
var uniqueString = "asderwegthyuq123";
document.body.appendChild(iframe);
iframe.style.display = "none";
iframe.contentWindow.name = uniqueString;
var form = document.createElement("form");
form.target = uniqueString;
form.action = "http://www.secondwebsite.com";
form.method = "POST";
var input = document.createElement("input");
input.type = "hidden";
input.name = "email";
input.value = x;
form.appendChild(input);
document.body.appendChild(form);
form.submit();
return true;
}
</script>    
4

1 回答 1

1

提交时复制表单并将表单提交到具有不同目的地的两个 iframe,或使用 AJAX。我强烈建议使用JQuery等框架,这样您就不必担心兼容性问题。

您的代码发生的情况是,它会在提交第一页期间尝试提交到第二页。如果第一个页面的提交在提交到第二个页面之前完成,则第二个提交将不会成功。如果您离开该页面,当前页面中的所有脚本都将停止(因为您将访问 www.firstwebsite.com)。

您可以在此处执行的一种解决方案是:

  1. 更改submit2nd()以便它将提交给第一个和第二个网站。
  2. submit2nd()应该返回 false 所以它不会尝试提交到action属性中的页面。
  3. 提交后(单击提交按钮),复制表单。
  4. 第一个表单 -> 更改action为 www.firstwebsite.com -> 提交。
  5. 第二种形式 -> 更改action为 www.secondwebsite.com -> 提交。

注意:如果您希望为此使用 AJAX,请确保您不会遇到跨域问题。在您的示例中,您尝试将表单提交到两个不同的域:firstwebsite.com 和 secondwebsite.com。如果它们位于不同的域中,则需要为此进行特殊设置。您可以阅读有关此内容的更多信息或查看此政策的说明

于 2013-03-13T03:34:38.967 回答