我正在尝试构建一个简单的检查,它将接受一个字符串并检查该字符串是否存在Twitter帐户。
我已经成功地获得了积极的结果,但我似乎无法得到否定的结果。 $.ajax()
有一个错误元素,但它没有触发。
代码:
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");
}
})
}
答案 0 :(得分:3)
您正在使用JSONP传输。在此传输中,请求的URL只是作为<script>
标记添加到文档中。如果URL返回非200状态代码,浏览器将不会执行该代码:这就是您无法看到否定回复的原因。
一种解决方案是使用suppress_response_codes
参数,以便API始终返回200状态代码。
请参阅Things Every Twitter Developer Should Know:
BTW,Twitter正在抑制对API的非认证访问,因此也可以抑制JSONP访问。
suppress_response_codes
:如果此参数存在,则所有响应都将返回200 OK状态代码 - 甚至是错误。此参数的存在是为了适应在拦截所有非200响应的浏览器中运行的Flash和JavaScript应用程序。如果使用,那么客户端的工作就是通过解析响应主体来确定错误状态。请谨慎使用,因为这些错误消息可能会发生变化。
答案 1 :(得分:0)
通常,API会在收到请求时始终返回响应。这就是没有错误的原因。您应该解析来自API的响应,以确定用户是否存在。
答案 2 :(得分:0)
使用JSONP请求时不会触发错误。阅读更多jQuery Forums。
答案 3 :(得分:0)
只是 arnaud576875 的答案摘要:
suppress_response_codes=1
参数ID
返回所以,结果将是这样的:
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.');
}
});
}