1

WordPress AJAX APIを使用してWordPress環境内で3つのajax呼び出しを続けて行い、3回目の呼び出しでページを更新する追跡システムを開発しています。

データ入力の試行の一部がバックエンドで失敗することがあり、前の呼び出しが200 OKをクリアする前に最後のAjax呼び出しが完了し、接続が切断されるため、これが発生していると(おそらく誤って)想定しています。 、つまり、データが保存されることはありません。

今では、jQuery.ajax({type:'POST'呼び出しが発行されるとすぐに、ページを閉じても、投稿先のサーバー側がデータを受信して​​処理できるという印象を受けています。ペアレント接続が発生します。

しかし、私のデータテストでは、一部のデータが一貫して入力されていないことが示されています。以前のAJAX呼び出しが200OKでクリアされる前に、これが私の最後のAJAX呼び出しの終了(およびページの再読み込み)に関連してはならないと考えるのは正しいですか?

助けてくれてありがとう!

4

1 に答える 1

1

はい、ajaxリクエストをサーバーに送信すると、ページを閉じることができますが、サーバーはリクエストを完了します(コードを実行します)。

しかし、あなたが知らなければならないポイントがあります、あなたはあなたの要求がサーバーに到着したかどうかを知ることができません。

jQuery.ajax("htpp://",{type: 'POST'});

これは非同期リクエストであるため、バックグラウンドでコードを実行します。このコード行を実行しても、リクエストを送信したわけではありません。バックグラウンドで機能するいくつかのフェーズがあります。

  1. jQueryはコードを解析し、必要なものを探します。
  2. オプションを設定するよりも、xmlhttprequestオブジェクトを作成します。
  3. そして最後に、サーバーにリクエストを送信します。

したがって、第3フェーズの前にページをすぐに閉じると、リクエストは送信されません。

同期ajaxリクエストを送信し、ページを更新/閉じるための応答を待つことをお勧めします。同期ajaxリクエストはブラウザを一時的にロックする可能性があるため、リクエストがアクティブな間はアクションを無効にします。

jQuery.ajax()では、次のように非同期を同期させるためにasyncfalseを設定する必要があります。

  jQuery.ajax({
    url: Url,
    success: function(r) {},
    async:false
  });
于 2013-03-28T10:06:07.767 に答える