如何在JavaScript中捕获错误的URL?

时间:2016-12-19 12:15:41

标签: javascript jquery ajax rest asp.net-web-api

我需要从主服务中获取数据,但有时,它不起作用,我想要一个后备。 Q& D解决方案的想法是从中下载一些数据,如果失败,请捕获错误并将URL更改为本地URL。像这样。

let found = null;
try {
  $.ajax({ url: mainUrl })
    .done(function (a) { found = true; });
} catch (e) { 
  found = false;
}

在控制台中,我可以看到浏览器抱怨无法找到源测试变量found仍为null。我错过了什么?

如果有更好(但仍然相当简单)的方法来检测Web服务的存在?如果是这样,我愿意接受建议。但主要是,我很好奇上面的例子有什么问题。

1 个答案:

答案 0 :(得分:2)

调用是异步的,浏览器不会等待你的ajax完成,然后继续执行脚本的其余部分(例如,你检查found的值)。

此外,try / catch不会将found设置为false,因为ajax正在触发,它只是在调用失败。尝试在.done()之后使用.fail()来捕获失败的请求。

但仍然不会将found变量设置为false。看看这里的解释比我能提供的解决方案要好得多:https://stackoverflow.com/a/14220323/1843048