form.submitのタイミングはどのように機能しますか?

私は私のコードベースで、私にとって危険なものとして際立ついくつかのjavascriptコードを見つけました。

function SaveAndClose()
{
  //etc etc some validation
  TheForm.submit();
  window.close();
}

おそらく私はフォームの提出タイミングの仕組みを誤解しています。私は誰かが私を啓発できることを望んでいた: 1)フォーム提出はいつ行われますか?
2)近くでフォーム提出にどのような影響がありますか?ここに競争状態が存在する可能性はありますか?

私は当初クローズが実行されないことを期待していました(実行はサブミット時に終了するでしょう)が、私が見ている動作は、サブミットとクローズの両方が実行中であることです(FFで) - データはDBフォームのポストアクションの)、そしてウィンドウは実際に閉じられています。

3

1 答え

submit() is an asynchronous call.
It kicks off an HTTP request in the background, then continues running the code on the page.

ブラウザウィンドウを閉じるとHTTPリクエストが強制終了するかどうかわかりません。
ただし、これがポップアップウィンドウにある場合、フォームは( target 属性を使用して)親ウィンドウにサブミットする可能性が高いため、問題ではありません。

3
追加された
@csauve:リクエストを直ちに送信して(私が想定している)、ネットワーク通話中にコードの実行を続けます。これが安全なパターンかどうかはわかりません。親の <iframe> target することをおすすめします。
追加された 著者 SLaks,
ターゲットを使用していません...クローズしないと、フォームのポストアクションページが表示されます。私は非同期呼び出しがどのように動作するのか不思議です - 私のjavascriptコードがすべて完成した後に実行され始めているのですか?競争状態を心配する必要はありますか?
追加された 著者 csauve,
ご協力いただきありがとうございます!私はちょっと実験しますが、それは間違いなく正しい方向に私を設定します
追加された 著者 csauve,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript