我想从twitter获取json数据。 http://api.twitter.com/1/statuses/public_timeline.json 这是我的代码
<html>
<head>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.getJSON("http://api.twitter.com/1/statuses/public_timeline.json",function(result){
$.each(result, function(i, field){
$("div").append(field + " ");
});
});
});
});
</script>
</head>
<body>
<button>Get JSON data</button>
<div></div>
</body>
</html>
来自http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_ajax_getjson 但它不起作用!
答案 0 :(得分:1)
您正在使用JavaScript中的same origin policy。这基本上说,你不能从不同的域访问资源(在你的情况下,其他域将是twitter.com)。
一种解决方案是使用JSONP。推特API supports this。您可以在这种情况下使用jQuery运行JSONP请求:
$.ajax({
url: "http://api.twitter.com/1/statuses/public_timeline.json",
cache: false,
dataType: 'jsonp',
success: function( result ){
$.each(result, function(i, field){
$("div").append(field + " ");
});
}
});
此外,w3schools不是可靠的信息来源。更好地使用像Mozilla Developer Network。
这样的东西答案 1 :(得分:0)
查看您要加载的json文档。当我尝试访问它时,它返回以下错误:
{"errors":[{"message":"Sorry, that page does not exist","code":34}]}
在您担心代码段是否正常工作之前,我会尝试使用对twitter的工作api调用替换url。 :)
答案 2 :(得分:0)
您尝试从其他域获取文档,并且由于Cross-Origin
资源共享,请求的网址阻止了您的请求。你可以在这里阅读:http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing
您可以将jSONP与jQuery一起使用,这可以让您完成请求,但您请求的页面会出现404错误,因此您可能无法对结果做多少。
答案 3 :(得分:0)
您可以使用$ .ajax()jquery方法从其他域访问json数据。请参阅下面的代码示例
$.ajax({
url : " // twitter api url",
dataType : "JSON",
cache : false,
success : function(success)
{
$.each(success, function(index,value) {$("div").append(value + ""); })
}
error : function() { //Statements for handling ajax errors }
});
您在该ajax请求中使用的url正在返回包含错误的json数组
{"errors": [{"message": "The Twitter REST API v1 is no longer active. Please
migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview.", "code": 68}]}
您需要在处理请求之前迁移到API v1.1,将twitter api url替换为API v1.1中提供的新json url