2012-01-21 10 views
3

レスポンスが返ってくるのが、自分自身を再び呼び出すことができないものであれば、ユースケースになります。

$.post(qrLoginAjax.ajaxurl, { 
    userID : '11234324' 
},function(response) { 
    if (response.userID != 'undefined'){ 
     //do stuff 
    } else { 
     // call $.post again 
    } 
}); 

どうすればよいですか?

おかげ

答えて

3

あなたはこのような何かを行うことができます:

var sendAjax = function() { 
    $.post('/foo', function(result) { 
     if (response.userID != 'undefined') { 
      // do stuff 
     } else { 
      // resend the AJAX request by calling the sendAjax function again 
      sendAjax(); 
     } 
    }); 
}; 

sendAjax(); 

しかし、このようなAJAXリクエストを送信することは、私の意見では悪いデザインの決定のように思えます。たとえば、いくつかの再試行カウンタを使用して、無限回帰にならないようにする必要があります。

1

これを関数にして、自身を呼び出すことができます。

function do_stuff(){ 
    $.ajax({ 
     url: 'ajax.php', 
     success: function(data){ 
      // Stuff 
     }, 
     error: function(){ 
      do_stuff(); 
     } 
    }); 
} 

これは再帰関数の一般的な原則であるが、非常には、条件をテストするか、そうでないので、試行の最大数を設定することをお勧めします:$アヤックスとたとえば、あなたがこれを行うことができます無限ループに陥る

関連する問題