2016-04-12 15 views
0

同期AJAX呼び出し(延期された約束を使用する方法)の例はたくさんありますが、私の問題は少し異なります。ここで私は、応答が特定の値が含まれている場合は周りに再びループAJAX呼び出し 応答に基づく同期AJAX呼び出しの繰り返し

  • を作成し、異なるパラメータを持つ別のAJAX呼び出しを行う

    1. をやろうとしていますものです。パラメータの値は、最初のAJAX呼び出しからの応答に依存するため、2回目のAJAX呼び出しを行う前に待機する必要があります。
    2. 応答に(exit = true)が含まれている場合は、ループを終了します。

    サーバーが条件3を返さない場合、私たちは無限ループになることを理解しています。

    AJAX呼び出しの応答に一定の値が含まれるまで、AJAX呼び出しを繰り返し実行するにはどうすればよいですか?

  • +1

    ajax呼び出しを関数に入れ、whileループでX条件が満たされるまで関数を実行します。同期処理を確実にするために、jquery ajax呼び出しでasync:falseを設定してください。ただし、同期処理を使用している場合は、ブラウザがロックされます。 whileループが実行されるまで、クリック、スクロールなどはできません。 – mhodges

    +2

    「同期」は非同期ではありませんか? – epascarello

    +0

    ...または多分 "順次"?約束は決して同期的ではありません。 – Bergi

    答えて

    0

    名前付き関数でAJAX呼び出しを行うコードを記述します。 AJAXのコールバック関数は、応答にexit = trueが含まれているかどうかをチェックします。そうでなければ、名前付き関数を再度呼び出して、更新された関数で次のAJAX呼び出しを行います。

    function call_ajax(params ...) { 
        $.ajax({ 
         url: "url", 
         data: { whatever }, 
         dataType: 'json' 
         success: function(response) { 
          if (!response.exit) { 
           // calculate new parameters 
           call_ajax(new_params ...); 
          } 
         } 
        }) 
    } 
    
    関連する問題