所以这是我的问题。使用javascript / jQuery我目前正在加载一个文件名为carousel_large_2010-06-08.xml的XML文件..我正在检查今天的日期,然后在文件名中抓取一个具有该日期的文件...问题是有时它们不会在给定的一天上传新文件,因此它需要回退到存在的旧日期。想知道如何做到这一点?这是我的代码:
// set date for xml file
var currentTime = new Date(),
month = currentTime.getMonth() + 1,
day = currentTime.getDate(),
year = currentTime.getFullYear();
if(month.toString().length == 1){
month = '0'+month.toString();
}
if(day.toString().length == 1){
day = '0'+day.toString();
}
var dateObject = year+"-"+month+"-"+day;
// start magic
$jq.ajax({
type: "GET",
url: "_xml/carousel/home/carousel_large_"+dateObject+".xml",
dataType: "xml",
success: HPCarousels.heroCarousel.parseXML,
error: function(){
alert('Error Loading XML Content');
}
});
答案 0 :(得分:1)
这是一个提议的(未经测试的)解决方案。我主要基于你的,但是考虑了日期字符串计算。将maxOffset
设置为您想要回顾的最多天数(在您昨天所说的问题中,1
)
function getDateString(offset) {
// set date for xml file
var currentTime = new Date().setDate(today.getDate()-offset),
month = currentTime.getMonth() + 1,
day = currentTime.getDate(),
year = currentTime.getFullYear();
if(month.toString().length == 1){
month = '0'+month.toString();
}
if(day.toString().length == 1){
day = '0'+day.toString();
}
return year+"-"+month+"-"+day;
}
var maxOffset = 1;
var success = 0;
for(var offset = 0; offset <= maxOffset && !success; offset++) {
success = 1;
// start magic
var dateString = getDateString(offset);
$jq.ajax({
type: "GET",
async: false;
url: "_xml/carousel/home/carousel_large_"+dateString+".xml",
dataType: "xml",
success: HPCarousels.heroCarousel.parseXML,
error: function(){
success = 0;
}
});
}
if (!success) {
alert('Error Loading XML Content');
}
答案 1 :(得分:0)
我假设你在AJAX调用返回之前不知道文件是否丢失,所以此时你可以尝试另一次查找。
function getDate(timestamp) {
month = timestamp.getMonth() + 1,
day = timestamp.getDate(),
year = timestamp.getFullYear();
return year + '-' + ((month < 10) ? '0' + month : month) + '-' + ((day < 10) ? '0' + day : day);
}
function attemptGet(timestamp, attempt) {
if (attempt >= 3) // Maximum number of attempts
return;
$jq.ajax({
type: "GET",
url: "_xml/carousel/home/carousel_large_"+dateObject+".xml",
dataType: "xml",
success: HPCarousels.heroCarousel.parseXML,
error: function(){
if (/* file is missing */) {
attemptGet(timestamp - 24 * 60 * 60, attempt + 1);
} else {
alert('Error Loading XML Content');
}
}
});
}
attemptGet(0);