[英]Can't load json data in jquery
我想从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,但它不起作用!
您在JavaScript中使用相同的源策略 。 这基本上说,你不能从不同的域访问资源(在你的情况下,其他域将是twitter.com)。
一种解决方案是使用JSONP。 twitter API支持这一点 。 您可以在这种情况下使用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这样的东西。
查看您要加载的json文档。 我尝试访问它时返回以下错误:
{"errors":[{"message":"Sorry, that page does not exist","code":34}]}
在你担心代码片段是否正常工作之前,我会尝试用一个有效的api调用来替换url。 :)
您尝试从其他域获取文档并且请求的URL因Cross-Origin
资源共享而阻止您的请求。 你可以在这里阅读: http : //en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing
您可以将JSONP与jQuery一起使用,这应该允许您完成请求,但您请求的页面会出现404错误,因此您可能无法对结果做多少。
您可以使用$ .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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.