1

请参阅下面的代码,我正在尝试处理 twitter api 调用返回的错误。请记住 Jquery 不处理 jsonp 数据类型,因此超时,下面的代码显然会为不存在的 twitter ID 抛出错误。我想在我的 req.error 方法中捕获该错误并将其显示给用户。但显然,错误是隐藏的,并且确实出现在 console.log('Oh noes!'+msg.error); 这肯定与 jquery 处理 jsonp 类型数据有关。有没有人遇到过同样的情况?有什么解决办法吗?

  function findUserInfo(){


    var req = $.ajax({

    url: "https://twitter.com/users/show.json?id=neverexistID",
    dataType : "jsonp",
    timeout : 10000

    });

    req.success(function(msg) {
        console.log('Yes! Success!'+msg);

    });

    req.error(function(msg) {
        console.log('Oh noes!'+msg.error);
    });


            }   

答:jsonp调用很特殊,抛出的错误通常是隐藏的,这就是为什么我无法处理错误情况,下面的插件很好地处理了这种情况并解决了我的问题。

jsonp 插件code.google.com/p/jquery-jsonp

4

1 回答 1

2

您的问题有一个解决方法,将您的 url 调用更改为:

url: "https://twitter.com/users/show.json?suppress_response_codes&id=neverexistID",

来自 Twitter文档

suppress_response_codes:如果存在此参数,则所有响应都将返回 200 OK 状态代码 - 甚至是错误。此参数的存在是为了适应在拦截所有非 200 响应的浏览器中运行的 Flash 和 JavaScript 应用程序。如果使用,那么客户端的工作就是通过解析响应正文来确定错误状态。请谨慎使用,因为这些错误消息可能会发生变化。

于 2012-04-16T21:41:22.960 回答