2014-04-04 24 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

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