代码之家  ›  专栏  ›  技术社区  ›  BrunoLM

如何检测请求是否被中止?

  •  32
  • BrunoLM  · 技术社区  · 14 年前

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

    问题是它执行 success 函数并返回空数据。。。 (example here)

    xhr 流产了?

    4 回复  |  直到 14 年前
        1
  •  46
  •   fdaugan    12 年前

    检测请求中止和避免脱机模式误报的最佳方法:

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

    我发现 here xhr 0 . 似乎是一个jquery1.4+错误。在1.3中,它调用了错误处理程序。

        3
  •  3
  •   user113716    14 年前

    编辑: 试试这个:

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


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

    这是故意的。测试是否 data 为null以确定请求是否正确响应。

    如果一个请求jQuery.get()返回 一个错误代码,它将无声地失败 全球的 .ajaxError() 方法。

    处理这个问题(从 here ).