0

メールを送信するphpファイルを呼び出すためにjQueryを使用して再帰関数を作成しようとしています。電子メール サーバーは一度に 10 通の電子メールのバッチを送信します。JS が data.Finished == true になるまで GET を発行し続けるようにします。

私のコードは次のとおりです。

function emailDespatchNotification() {
  $.get('email.php', function(event) {
    if (event.action.status == 'OK') {
      if (event.data.Finished != true) {
        emailDespatchNotification();
      }
    }
  });
}

JSON の結果は次のとおりです。

{
"log": {"SQL":{"0":"SELECT ...","1":"INSERT INTO ..."},"0":"Cache cleared","Page":"email.php","Script_Time":3.4495},
"data": {"Finished":false},
"action": {"status":"OK"},
"readable": {}
}

が初めて呼び出されたときemailDespatchNotification()、コードは 1 つの GET をサーバーに送信するように動作しますが、結果 (data.Finished = false を含む) が返されると、JS はサーバーに GET リクエストを送信し続けます。ブラウザはエラーを報告します。

emailDespatchNotification()GET が値を返した後にのみ呼び出す必要があるため、 が継続的に呼び出される理由がわかりません。GET 全体を名前付き関数にネストして、代わりにemailDespatchNotification()それを呼び出してみましたが、効果はありませんでした。リストを使用する前にこの種の問題を回避しましたが、サーバーを呼び出す必要がある回数がわからないため、リストは適切ではありません。jQuery 1.8.3 を使用し、Firebug でデバッグしています。

4

1 に答える 1

0

GET 関数にシードを追加することで問題を解決したと思いますが、Cache-Control は no-store, no-cache に設定されていましたが、結果をキャッシュしていました。

適応されたコードは次のとおりです。

var seed = new Date() / 1;
$.get('beta/email.php', {seed:seed}, function(event) {

このようにして、ページのライブ バージョンを取得し、コードが正常に実行されるようにします。

@ジェイソンPすべての助けをありがとう!

于 2013-07-25T13:03:21.793 に答える