2013-09-17 3 views
1

Я использую JQuery 1.9.1. Этот вопрос может быть возможным дублированием некоторых предыдущих вопросов. Но они устарели. Поэтому мне нужно решение с датой.Как убить предыдущий запрос ajax на стороне сервера?

Для моего приложения Java, я посылаю непрерывный запрос на tomcat server для каждого 10 sec через JQuery-Ajax, чтобы получить данные, как,

function startPolling(){ 

    $.ajax({ 
     type: "POST", 
     cache: false, 
     url: "My URL", 
     dataType: "html", 
     timeout: 10000, 

     success: function(response) {      
      if(response != null && response !="" && response !="null") 
       $("#sucess").html(response); 
     }, 
     error: function(xhr) { 
      xhr.abort(); 
      //alert('Error: ' + e); 
     }, 

     complete: function(xhr, status) { 
      xhr.abort(); 
      startPolling(); 
     }, 
    }); 
} 

Пожалуйста, убедитесь, что я abort/cancel в client side предыдущий запрос в надлежащем порядке.

Также как отменить server side request processing, перед отправкой нового запроса через ajax.

Надеюсь, что наши пользователи стека помогут мне.

+0

Простой ответ, вы не можете сделать это со стороны клиента. –

+0

@Arun Я видел ваш предыдущий ответ http://stackoverflow.com/questions/4551175/how-to-cancel-abort-jquery-ajax-request/4551178. Но это было очень старым. –

+0

одним возможным способом является сервер для возврата идентификатора ссылки процесса всякий раз, когда выполняется запрос, а затем отправляется идентификатор процесса обратно на сервер с запросом на отмену, а на стороне сервера вам нужно применить какую-то логику отмены –

ответ

1

Существует ошибка в стороне клиента прервать здесь

var pollXhr; 
function startPolling(){ 
    if(pollXhr){ 
     pollXhr.abort() 
    } 

    pollXhr = $.ajax({ 
     type: "POST", 
     cache: false, 
     url: "My URL", 
     dataType: "html", 
     timeout: 10000, 

     success: function(response) {      
      if(response != null && response !="" && response !="null") 
       $("#sucess").html(response); 
     }, 
     complete: function(xhr, status) { 
      pollXhr = null; 
      startPolling(); 
     }, 
    }); 
} 

Примечание: Это не остановить обработку на стороне сервера

+0

+1 и принял ваш ответ. –