如何签入 jQuerys $.ajax 回调'complete'请求是否成功?



我在ajax complete回调中有一个很大的代码块,我想在其中检查ajax请求是否成功:

$.ajax(function() {
    url: 'http://hostname.com',
    data: myData,
    dataType: 'json',
    complete: function(data) {
        // [... much code ...]
        $('#MyElement').text(<success> ? $.parseJSON(data.responseText) : 'Failed');
        // [... much code ...]
    }
});

我的问题是:我想保持我的代码干燥,不想把代码复制到"成功"one_answers"错误"回调中。那么,我可以在这里使用什么作为占位符<success>呢?

您可以在设置中使用第二个参数:

complete: function(data, status) { ... }

status将包含以下值之一:

  • "成功"
  • "未修改"
  • "错误"
  • "超时"
  • "中止"
  • "parserror"

http://api.jquery.com/jquery.ajax/了解更多信息。

jQuery ajax()方法没有回调函数作为参数。您应该传递url或一个对象,或者两者都传递。

来自文件:

完成类型:函数(jqXHRjqXHR,字符串文本状态)

当请求完成时(在成功和错误回调执行之后)要调用的函数。该函数传递两个参数:jqXHR(在jQuery 1.4.x中,XMLHTTPRequest)对象和一个对请求状态进行分类的字符串("success"、"notmodified"、"error"、"timeout"、"abort"或"parserror")。

您可以通过修改以下函数来使用第二个参数textStatus

$.ajax({
  url: 'myUrl',
  data: {myData: myData},
  complete: function(data, status) {
    $('#MyElement').text(status=="success"? data : "Failed");
  }
});

最新更新