使用AJAX / JSON验证是否存在Twitter帐户

时间:2012-09-04 10:07:20

标签: javascript jquery ajax twitter

我正在尝试构建一个简单的检查,它将接受一个字符串并检查该字符串是否存在Twitter帐户。

我已经成功地获得了积极的结果,但我似乎无法得到否定的结果。 $.ajax()有一个错误元素,但它没有触发。

Working Example

代码:

var testTwit = function(username){
    $.ajax({
      url: 'http://twitter.com/statuses/user_timeline.json?screen_name='+username+'&count=1&callback=?',
      dataType: 'json',
      success: function(){
          alert("username is valid");
      }, 
     error: function(){
         alert("username is valid");
     }
   })
 }

4 个答案:

答案 0 :(得分:3)

您正在使用JSONP传输。在此传输中,请求的URL只是作为<script>标记添加到文档中。如果URL返回非200状态代码,浏览器将不会执行该代码:这就是您无法看到否定回复的原因。

一种解决方案是使用suppress_response_codes参数,以便API始终返回200状态代码。

请参阅Things Every Twitter Developer Should Know

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

答案 1 :(得分:0)

通常,API会在收到请求时始终返回响应。这就是没有错误的原因。您应该解析来自API的响应,以确定用户是否存在。

答案 2 :(得分:0)

使用JSONP请求时不会触发错误。阅读更多jQuery Forums

答案 3 :(得分:0)

只是 arnaud576875 的答案摘要:

  1. 添加suppress_response_codes=1参数
  2. 检查ID返回
  3. 所以,结果将是这样的:

    var testTwit = function(username){
        $.ajax({
           url: 'http://twitter.com/statuses/user_timeline.json?suppress_response_codes=1&screen_name='+username+'&count=1&callback=?',
           dataType: 'json',
           success: function(d){
             if (d && d.id)    
                $('span').html('username is valid!');
             else
                $('span').html('username is not valid.');
           }
        });
    }