2014-04-04 46 views
0

我正在運行一個返回請求狀態的長輪詢ajax。如果失敗,我需要停止阿賈克斯。所述AJAX是這樣寫的:在發生故障時停止ajax功能

function someFunction(url){ 
    $.ajax({ 
     url: url, 
     success: function(data){ 
      if(data.status == 'FAILED'){ 
       //Need this ajax to stop 
      } 
     } 
    }); 
} 



$('some-button').on('click',function(
    var url = 'server-url'; 
    someFunction(url); 
)); 

我不得不使用someFunction()用作此長輪詢方法正在使用的代碼的多個其他部分。我應該做些什麼來阻止這個功能?

+0

看到這個http://stackoverflow.com/questions/4551175/how-to-cancel-abort-jquery-ajax-request –

+0

停止如何,到數據返回時,它完成? – adeneo

+0

使用'ajax.abort();' –

回答

0

$.ajax返回一個包裝的xhr對象。只需使用:

var req = $.ajax... 
.. 
req.abort() 
0

嘗試這樣的事情

 function someFunction(url){ 
     $.ajax({ 
      url: url, 
      success: function(data){ 
       if(data.status != 'FAILED'){ 
        //Need this ajax to stop 
       } 
      } 
     }); 
    } 

您的Ajax請求已經在成功完成。但如果狀態是失敗,你要停止的代碼繼續執行比你可以使用不!

0
var ajaxReq = null; 
ajaxReq = $.ajax({ 
     url: url, 
     success: function(data){ 
      if(data.status == 'FAILED'){ 
       //Need this ajax to stop      
      } 
     } 
     error: function (x, y, z) { 
      ajaxReq.abort(); 
     } 
    }); 

你也可以使用ajaxReq.abort()停止Ajax調用。

+0

您正在'success'處理程序中寫入'abort'調用,這意味着ajax請求已經完成,不是這樣。什麼叫'abort'呢? –

+0

@ web-nomad,正是我在嘗試此解決方案時遇到的問題。我不認爲這是正確的解決方案。 – Newtt

+0

是的..我有更新的解決方案。 –