为了账号安全,请及时绑定邮箱和手机立即绑定

jQuery ajax(jsonp)忽略超时并且不会触发错误事件

jQuery ajax(jsonp)忽略超时并且不会触发错误事件

隔江千里 2019-08-06 16:12:36
jQuery ajax(jsonp)忽略超时并且不会触发错误事件为了添加一些基本的错误处理,我想重写一段使用jQuery的$ .getJSON来从Flickr中提取一些照片的代码。这样做的原因是$ .getJSON不提供错误处理或使用超时。因为$ .getJSON只是$ .ajax的包装,所以我决定改写这个东西并惊喜,它完美无缺。现在开始有趣了。当我故意导致404(通过更改URL)或导致网络超时(没有连接到互联网)时,错误事件根本不会触发。我不知道自己做错了什么。非常感谢帮助。这是代码:$(document).ready(function(){     // var jsonFeed = "http://api.flickr.com/services/feeds/photos_public.gne"; // correct URL     var jsonFeed = "http://api.flickr.com/services/feeds/photos_public.gne_______"; // this should throw a 404     $.ajax({         url: jsonFeed,         data: { "lang" : "en-us",                 "format" : "json",                 "tags" : "sunset"         },         dataType: "jsonp",         jsonp: "jsoncallback",         timeout: 5000,         success: function(data, status){             $.each(data.items, function(i,item){                 $("<img>").attr("src", (item.media.m).replace("_m.","_s."))                           .attr("alt", item.title)                           .appendTo("ul#flickr")                           .wrap("<li><a href=\"" + item.link + "\"></a></li>");                 if (i == 9) return false;             });         },         error: function(XHR, textStatus, errorThrown){             alert("ERREUR: " + textStatus);             alert("ERREUR: " + errorThrown);         }     });});我想补充说,当jQuery版本为1.4.2时,会问这个问题
查看完整描述

3 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

jQuery 1.5及更高版本可以更好地支持JSONP请求的错误处理。但是,您需要使用该$.ajax方法而不是$.getJSON。对我来说,这有效:

var req = $.ajax({
    url : url,
    dataType : "jsonp",
    timeout : 10000});req.success(function() {
    console.log('Yes! Success!');});req.error(function() {
    console.log('Oh noes!');});

超时似乎可以解决问题并在10秒后没有成功请求时调用错误处理程序。


查看完整回答
反对 回复 2019-08-06
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

一个解决方案,如果你坚持使用jQuery 1.4:

var timeout = 10000;var id = setTimeout( errorCallback, timeout );$.ajax({
    dataType: 'jsonp',
    success: function() {
        clearTimeout(id);
        ...
    }});


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 607 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信