$.ajax({
url: "http://ajaxhttpheaders.appspot.com",
dataType: 'jsonp',
success: function(headers) {
language = headers['Accept-Language'];
alert(language);
},
//it doesn't work
//timeout: 2000,
error: function() {
//wait for 2 sec..
//and if there are no response, do something..
}
});
我找到timeout: 2000
选项,但它不起作用。
答案 0 :(得分:1)
这有点笨拙,但这应该可以解决问题:
var cancelled = false;
var errorTimer;
$.ajax({
url: "http://ajaxhttpheaders.appspot.com",
dataType: 'jsonp',
success: function(headers) {
if (! cancelled) {
cancelled = true; // stop timeout code from running
language = headers['Accept-Language'];
alert(language);
}
});
});
var errorCode = function () {
if (!cancelled) {
cancelled = true;
alert('Took too long and now we ignore the response!');
}
};
setTimeout(errorCode, 2000);
答案 1 :(得分:0)
如何处理超时,请回答here。
我不确定在获得成功回复之前,会有不同时间间隔发生的事件。
答案 2 :(得分:0)
您的数据类型为 jsonp ,明确提及here
脚本和JSONP请求不能被超时取消;剧本 即使在超时后到达,它也会运行。
答案 3 :(得分:0)
Ajax请求是有时间限制的,因此可以捕获和处理错误 提供更好的用户体验。请求超时通常也是 保留默认值或使用 $ .ajaxSetup()设置为全局默认值 而不是被超时的特定请求覆盖 选项强>
此外:
仅在Firefox 3.0+中,脚本和JSONP请求无法取消 超时;即使超时后到达,脚本也会运行 周期。