【问题标题】:JSONP error in JQuery 1.7JQuery 1.7 中的 JSONP 错误
【发布时间】:2012-04-30 05:25:19
【问题描述】:

注意:我检查了其他答案,包括this question re: a pre-jQuery 1.5 JSONP error issue that has now been resolved。我正在使用 JQuery 1.7,我相信它不会受到这个问题的影响。

截至JQuery 1.5 proper error functions are possible with JSONP(参见“jqXHR 对象”)。但是错误函数似乎没有被触发。

$.getJSON(url, function(response) { 
    console.log(response)   
}).error( function() { console.log('Error occurred.') } )   

查看 Chrome 开发工具,JSONP 请求生成以下错误:

GET https://twitter.com/status/user_timeline/somepretendusername.json?count=2&callback=jQuery171005595548846758902_1334772179012&_=1334772179132 400 (Bad Request)

但是 .error() 回调似乎根本没有运行。使用 JSONP 进行正确的错误处理需要什么?

【问题讨论】:

  • 你使用.fail()回调得到同样的结果吗?
  • @KevinB 谢谢。唉 .fail() 似乎也不起作用。

标签: javascript jquery cross-domain jsonp


【解决方案1】:

只有在请求出错时才会触发错误函数。正在发出请求,但如果用户名不存在,Twitter 会返回 400。我使用假用户名进行了尝试,得到了与您相同的响应,但后来我使用了我的用户名,它就像一个冠军一样工作。

[edit] 我看到您只是在询问如何使用 JSONP 处理错误。无论出于何种原因,jQuery 似乎都没有对此进行良好的错误处理。我确实找到了一个承诺对 JSONP 进行实际错误处理的插件。看看here

[edit2]检查一下,它有效!

$(document).ready(function() {
    var url = 'https://twitter.com/status/user_timeline/thisisnotarealtwitterhandle.json?count=2&callback=?';
    var jqxhr = $.jsonp({
        url: url,
        success: function(response) {
            console.log(response)
        }
    }).fail(function() { console.log('error'); });
});

【讨论】:

  • 谢谢,但我使用的是真实用户名。我的问题是如何正确处理错误,而不是如何避免 400 错误。
  • @nailer 我想真正的问题是 400 的状态码是否真的应该在 jQuery 中触发错误。您可以使用.always回调并获取请求的状态码,然后如果状态码是400,则执行此操作,否则执行此操作。
  • 是的,我想我更能理解你的问题。它似乎确实源于 $.getJSON 不成功时引发错误的事实。
猜你喜欢
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 2011-07-11
  • 2013-04-08
  • 2013-01-28
  • 2013-09-20
  • 1970-01-01
相关资源
最近更新 更多