2014-02-21 2 views
0

У меня есть какой-то цикл опроса ajax - вытащить сообщение, обработать сообщение, подождать, снова вытащить ... - все работает нормально, пока пользователь не отключится из Интернета (это может быть даже так просто действие пользователя как спящий/спящий режим ПК). После этого - по крайней мере, в последнем Chrome - POST завершается сбой (логично) - но после повторного подключения к Интернету цикл опроса не запускается снова (даже если сеанс все еще включен).Ajax опрос останавливается для опроса после отключения интернета

jQuery(function(){ 
// ba polling main 
    function pollingMain() { 
      $.ajax({ 
       type: "POST", 
       url: ba_home_url+"/pollingscript.php", 
       data: { 
       "load": "something", 
       "data-one": 0, 
       "data-two": 0 
       }, 
       dataType: "json", 
       timeout: 60000, 
       success: function(data) { 
        if(data.status == 'nodata'){ 
        setTimeout(pollingMain,10000); 
        } else{ 
        if(data.status == 'okdata'){ 
         console.log('Ok data recived'); 
         setTimeout(pollingMain,10000); 
        } else{ 
         //server responded with something we dont know what is 
         setTimeout(pollingMain,10000); 
        } 
        } 

       }, 
       error: function(request, status, err) { 
        if(status == "timeout") { 
         setTimeout(pollingMain,10000); 
        } 
       } 
      }); 
    } 
    pollingMain(); 

}); 

Это мой код. Наверное, мне не хватает чего-то в обратном вызове ошибки, но какую обработку ошибок я должен добавить?

+0

'ba_home_url' =? Это 'localhost',' IP-адрес', 'Computer Name' –

+0

Просто url_base - это не проблема :) –

ответ

1

Вы проверяете статус «timeout» в определенном состоянии. Добавить инструкцию else для обработки других статусов.

Смежные вопросы