2

フォーム送信イベントへのフックを追加しました (フォーム送信には他のイベントがあります)。 createelement(script) を使用して別のドメインのサーバーに送信を報告する必要があります。

createelement(script) がサーバーに正常にアクセスしたことを確認するために送信機能を待機させるにはどうすればよいですか?

4

3 に答える 3

5

このようなものはどうですか:

<script>
  function handleSubmit(form) {
    doSomethingAsynchron(
       function() { // callback function
          form.submit();
       }
    );
    return false;
  }
</script>

<form onsubmit="return handleSubmit(this);" ... >
...
</form>
于 2010-12-22T15:08:36.057 に答える
1

JavaScriptイベントを利用するようにしてください。特定のイベントが発生したときに呼び出される任意の関数を登録できます。事前定義されたイベントのいくつかを使用してコードの完了を通知するか、Yahoo! のようなものを使用します。ライブラリを使用して、サーバー リクエストの完了を表すカスタム イベントを作成します (短い Google 検索で最後のイベントを見つけましたが、有望に見えます)。

JS には組み込みのカスタム イベント アーキテクチャがあると思っていましたが、明らかにそうではありません。したがって、この Yahoo! のような外部ライブラリを使用する必要があります。もの。たぶん、これは近い将来変わるでしょう。これは私の知識を超えています。しかし、あなたが説明した問題を正確に解決するので、イベントを使用することをお勧めします。

(代わりに、タリアマが説明したように忙しい待機を行うこともできます。一般的に、睡眠サイクルを使用するか、一般的に忙しくない待機は、可能な限りお勧めしません。)

図:

<script>
// register function b() for custom event

function a() {
    //upload
    // (takes time... but no busy wait)

    //fire custom event
}

function b() {
    //do some other code
}
</script>

<body>

<form onsubmit="a()">
</form>

</body>
于 2010-12-22T12:12:54.463 に答える
0

あまり洗練されていない解決策は、時間間隔を使用して、スクリプトがサーバーにアクセスしたかどうかを確認することです (応答を確認します)。これにはsetIntervalを使用します。

于 2010-12-22T11:55:53.043 に答える