javascript - 从 Ajax 调用中的错误 block 返回延迟的 jQuery

标签 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(...)

最佳答案

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

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

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

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

关于javascript - 从 Ajax 调用中的错误 block 返回延迟的 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24329330/

相关文章:

javascript - 检查元素是否具有给定数组中的任何属性

javascript - 函数作用域 javascript,返回函数外部

用户输入时 JavaScript 自动完成下拉菜单

javascript - 如何将两个 if 语句合并为一个?

javascript - 无法修改原型(prototype)数组内部

javascript - Cordova - 用于“保持”录制音频的按钮 - 有时会停止

javascript - 如何在 Kendo UI Combobox 中手动将项目添加到数据源中

javascript - AJAX接收多个数据

jquery - 最好的 jQuery 深度链接/历史插件是什么?

c# - 如何在没有页面重新加载的情况下调用页面方法?