我正在创建这个简单的天气应用程序,应用程序从openweathermap.org获取天气数据。从这里我创建这样的url(你得到xml数据):
http://api.openweathermap.org/data/2.5/forecast/weather?q=Koper,slovenia&mode=xml&units=metric
因此,对于我的应用程序,我使用jquery和此代码从api获取数据:
$.ajax({
type: 'GET',
dataType: 'xml',
url: "http://api.openweathermap.org/data...",
}).done(function(data){
xmlDoc = data;
//from here I work with xml that I get, and put data into array to display chart
var time=xmlDoc.getElementsByTagName('time');
...
}).fail(function(){
location.reload(); //this is not a good solution
});
这很好,但我的问题是下一步:有时来自openweathermap的服务器不响应我的" url"调用并获取消息错误404.然后,如果您多次刷新页面(或网址),那么它的工作原理。对于临时解决方案,我在"失败"函数重新加载页面(location.reload)。但这不是一个好的解决方案,因为当服务器调用失败时,页面会不断重新加载。
任何想法如何解决这个问题,当服务器无法获取数据以便它再次尝试重新解析时... tnx寻求帮助
答案 0 :(得分:1)
您的代码应该是这样的:
$.ajax({
type: 'GET',
dataType: 'xml',
url: "http://api.openweathermap.org/data...",
tryCount : 0, // pass this for internal use if fails
retryLimit : 3 // pass this for internal use if fails
}).done(function(data){
...
...
}).fail(function(xhr, textStatus, errorThrown ){
if (textStatus == 'timeout') {
this.tryCount++;
if (this.tryCount <= this.retryLimit) {
//try again
$.ajax(this);
return;
}
return;
}
if (xhr.status == 500) {
//handle error
} else {
//handle error
}
});