0

フォーム データを 2 つの異なる場所に同時に投稿したい状況があります。私は場所を制御できず、それらはクロスドメインです。iframe を使用して、ここで以前の投稿を見つけましたが、今は見つけられず、組み込みました。最初のものには毎回提出しますが、2 番目のものは 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

送信時にフォームを複製し、宛先が異なる2つのiframeにフォームを送信するか、AJAXを使用します。互換性の問題を心配する必要がないように、 JQueryなどのフレームワークを使用することを強くお勧めします。

コードに何が起こっているのかというと、最初のページの送信中に2番目のページに送信しようとします。最初のページへの送信が2番目のページへの送信の前に終了した場合、2番目の送信は成功しません。ページを離れると、現在のページのすべてのスクリプトが停止します(www.firstwebsite.comにアクセスするため)。

ここで実行できる解決策の1つは、次のとおりです。

  1. submit2nd()1番目と2番目のWebサイトに送信するように変更します。
  2. submit2nd()action属性のページに送信しようとしないように、falseを返す必要があります。
  3. 送信(送信ボタンのクリック)時に、フォームを複製します。
  4. 最初のフォーム-> actionwww.firstwebsite.comに変更->送信。
  5. 2番目のフォーム-> actionwww.secondwebsite.comに変更->送信。

注:これにAJAXを使用する場合は、クロスドメインの問題が発生しないことを確認してください。あなたの例では、firstwebsite.comとsecondwebsite.comの2つの異なるドメインにフォームを送信しようとしました。異なるドメインにある場合は、このための特別な設定が必要です。これについて詳しく読むか、このポリシーの説明を確認してください。

于 2013-03-13T03:34:38.967 に答える