2015-07-23 5 views
0

У меня есть HTTP долго опрос опрос делается так:XHR после прерывания

xhr = $.ajax({ 
        type: "GET", 
     url: "http://localhost/pubsub.php", 
     ... 

Ajax возвращает объект XHR. И я использую его в другой функции, чтобы прервать длинный запрос опроса, выполнив xhr.abort();

После этого, как я могу перезапустить длинный запрос на опрос? Есть ли способ перезагрузки?

Благодаря

+0

Вы можете поместить этот ajax в одну функцию и называть его снова –

+0

"* Есть ли способ перезагрузки? *« Нет, просто отправьте другой, как любой другой запрос. –

ответ

0

Там нет API присутствует перезапустить AJAX, но вы можете имитировать перезагрузку AJAX, вызвав AJAX снова в error функции обратного вызова.

var xhr; 
 

 
function callAJAX() { 
 
    xhr = $.ajax({ 
 
     url: "http://stackoverflow.com/dummyURL", 
 
     error: function (xhr, e) { 
 
      console.log("Error Occured " + e); 
 
      callAJAX(); // Restart the AJAX call 
 
     } 
 
    }) 
 
} 
 

 
callAJAX(); 
 

 

 
xhr.abort()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

Вот что я делаю в моих проектах,

Если я вижу длительную задержку в ответ Ajax, я просто прервать запрос предыдущий АЯКС и сделать новый запрос в том же методе, как показано ниже,

Примечание: я не вызываю метод GetData() в любом цикле, скорее это действие нажатия кнопки (например, обновление) пользователя приложения.

function GetData() 
{ 
      if (getDataAjaxCall && getDataAjaxCall.readyState != 4) 
       getDataAjaxCall.abort(); 

       var searchRequest = {}; 
       searchRequest.Criteria = []; //set some criteria  

    getDataAjaxCall = $.ajax({ 
       url: 'api/DataController/GetData', 
       type: 'POST', 
       dataType: 'json', 
       data: searchRequest, 
       success: function (data, textStatus, xhr) { 
        //do tasks you want on success 
       }, 
       error: function (xhr, textStatus, errorThrown) { 
        $.unblockUI(); 
        if (textStatus != 'abort') { 
         //display error message on actual error 
        } 
       } 
      }); 
} 

Я надеюсь, что приведенные выше строки кода могут дать вам некоторую идею.

Также в обратном вызове ошибки поместите чек, чтобы перехватить прерывание и обработать его отдельно.

+0

не слепо редактировать ответы, вы сказали в комментариях, что никакого результата не видно, знаете ли вы о функции 'console.log()'. – vinayakj

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