开发者

How to detect if a request was aborted?

I am making a request and then right after it I abort.

var x = $.get(url, function (d, e, xhr) { alert(d); });
x.abort();

The problem is that it executes the success function and returns empty data... (example here)

开发者_C百科

Is there a jQuery method to abort? or Is there a way to check if the xhr was aborted?


The best way to detect request abortion and avoiding false positive from offline mode :

$("#loading").ajaxError(function(event, xhr) {
  if (xhr.status === 0) {
    if (xhr.statusText === 'abort') {
      // Has been aborted
    } else {
      // Offline mode
    }
  }
});


I found here that the xhr will return with status 0. Seems to be a jQuery 1.4+ bug. On 1.3 it called the error handler.


EDIT: Try this:

x.onreadystatechange = null;
x.abort();

Seems to work. Not sure what side effects, if any.


Original answer:

Would it be sufficient to just test the response received?

var x = $.get("./", function (d, e, xhr) {
    if(d) {
        // run your code with response
        alert(d);
    }
    // otherwise, nothing will happen
});


This is by design. Test if data is null to determine if the request responded correctly.

If a request with jQuery.get() returns an error code, it will fail silently unless the script has also called the global .ajaxError() method.

It may be useful to handle this (from here).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜