返回从Ajax调用中的错误块延迟的jQuery

时间:2014-06-20 14:14:20

标签: javascript jquery ajax jquery-deferred

我试图通过jQuery Ajax加载文件。如果第一个位置失败,它应该尝试在另一个路径上检索它。这基本上有效,请求转到替代URL,但是我没有从loadFile()延迟返回我需要进一步向下的jQuery。

如何让loadFile()始终返回正确的延迟?

loadFile = function(url) {
  return $.ajax({
    url: u,
    error: function() {
      return $.ajax({
        url: '/otherPath/' + u
      });
    }
  });
};

loadFile('stats.xml').then(parseXml).then(...)

1 个答案:

答案 0 :(得分:1)

尽管error:内有第二个请求,但loadFile()仍然会返回失败的初始Deferred()

为了能够将具有自己状态的Deferred链接起来,您将要使用.then()

loadFile = function(url) {
  return $.ajax({
    url: u
  }).then(null, function() {
    return $.ajax({
      url: '/otherPath/' + u
    });
  });
};

示例:http://jsfiddle.net/9sHK7/