Javascript ajax获取,如果未找到原始url,则替换url
我想知道,如果找不到原始文件,是否可以提供另一个url。 具体而言: 文件的链接是动态生成的,最后四个字符是当前年份。今年并不总是有一个文件,所以我的目标是提供一个上一年的备份url 下面是我正在使用的当前代码的一个示例:Javascript ajax获取,如果未找到原始url,则替换url,javascript,ajax,jquery,get,Javascript,Ajax,Jquery,Get,我想知道,如果找不到原始文件,是否可以提供另一个url。 具体而言: 文件的链接是动态生成的,最后四个字符是当前年份。今年并不总是有一个文件,所以我的目标是提供一个上一年的备份url 下面是我正在使用的当前代码的一个示例: var newXML = function(url) { var newDoc = null; $.ajax({ type: "GET", url: url, dataType: "xml",
var newXML = function(url) {
var newDoc = null;
$.ajax({
type: "GET",
url: url,
dataType: "xml",
async: false,
success: function(xml) {
newDoc = $(xml);
},
error: function(jqXHR, text, errorMsg) {
alert("The following error occurred: "+ errorMsg);
}
});
return newDoc;
}
每当我需要检索一个文档时,我都会调用newXML,并向它传递一个以当年结尾的url。如果文件不存在,如何提供备份?这是一个快速而肮脏的修复方法。我在第一次尝试定位主文件后添加了此代码
setTimeout(function(){
if($('#latest').is(':empty')){ "Added code here requesting an alternate file if div is empty" }}, 1000);
我只会使用这个,直到我掌握了上面评论中概述的正确方法。具体地说
我不主张使用这种方法,除非你们在最后期限内,并正在扑灭其他火灾。一旦这些火被扑灭,我将花几个小时来理解如何正确地解决这个问题。也就是说,它工作正常。如果ajax调用失败,请使用另一个URL再次调用该函数,您应该为此使用
done()
和fail()
,并且您应该创建您的逻辑,使其能够与异步调用一起工作。@adeneo我同意,甚至可以将一个变量设置为URL,如果出现错误,如果需要,可以使用setTimeout将变量设置为新URL,以重试旧URL。有趣的问题。我认为您应该使用fail()
@adeneo、@Zach、@Phong将函数更改为递归函数,谢谢您的输入。我已经开始研究你提到的方法,在这样做的过程中,我似乎使用了一种过时的方法。