jQuery getJSON с таймаутом - PullRequest
       5

jQuery getJSON с таймаутом

13 голосов
/ 09 ноября 2010

При обращении к веб-службе Yahoo (http://boss.yahooapis.com/ysearch) для возврата набора данных, возможно ли установить таймаут и выйти из процедуры после ее истечения?

jQuery.getJSON("http://boss.yahooapis.com/ysearch/...etc",
        function (data) {
              //result set here
            });

Ответы [ 4 ]

16 голосов
/ 09 ноября 2010

Вы можете использовать опцию тайм-аута

http://api.jquery.com/jQuery.ajax/

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback,
  timeout: 3000 //3 second timeout
});
14 голосов
/ 13 марта 2012
 $.ajax({ 
  url: url, 
  dataType: 'json', 
  data: data, 
  success: callback, 
  timeout: 3000 //3 second timeout, 
  error: function(jqXHR, status, errorThrown){   //the status returned will be "timeout" 
     //do something 
  } 
}); 
6 голосов
/ 22 марта 2012
    function testAjax() {
        var params = "test=123";
        var isneedtoKillAjax = true; // set this true

        // Fire the checkajaxkill method after 10 seonds
        setTimeout(function() {
            checkajaxkill();
        }, 10000); // 10 seconds                

        // For testing purpose set the sleep for 12 seconds in php page 

        var myAjaxCall = jQuery.getJSON('index2.php', params, function(data, textStatus){               
            isneedtoKillAjax = false; // set to false
            // Do your actions based on result (data OR textStatus)
        }); 

        function checkajaxkill(){

            // Check isneedtoKillAjax is true or false, 
            // if true abort the getJsonRequest

            if(isneedtoKillAjax){
                myAjaxCall.abort();
                alert('killing the ajax call');                 
            }else{
                alert('no need to kill ajax');
            }
        }
    }
0 голосов
/ 09 ноября 2010

Вариант тайм-аута, предложенный Галеном, - лучший способ. Если вам нужен альтернативный метод, вы можете записать время, когда запрос был инициирован, и в своем обратном вызове сравнить его с текущим временем. Игнорируйте результат, если прошло определенное время. Конечно, это не отменит запрос.

...