我正在尝试加载JSON并提醒它,但我无法做到这一点。我很困惑之前做过这个,但现在它不起作用。一个简单的小提琴将有所帮助,这就是我尝试它的方式:
$.getJSON("https://www.mariyano.com/app-server/test/?action=get_list", function(json) {
alert("JSON Data: " + json.data.id);
});
我收到了错误...
XMLHttpRequest无法加载https://www.mariyano.com/app-server/test/?action=get_list。 Access-Control-Allow-Origin不允许原点http://fiddle.jshell.net。
为此我尝试使用回调:
$.getJSON("https://www.mariyano.com/app-server/test/?action=get_list&callback=?",function(json) {
alert("JSON Data: " + json.data.id);
});
它引发了两个错误:
资源被解释为脚本但以MIME类型text / html传输:“https://www.mariyano.com/app-server/test/?action=get_list&callback=jQuery18205437749766279012_1353579335783&_=1353579335798”。的jquery-1.8.2.js:8304
Uncaught SyntaxError:意外的令牌:
答案 0 :(得分:2)
如果没有circumventing the same-origin policy,您将无法访问其他网域上的数据。
除非您访问的服务支持JSONP,否则您无法使用JSONP执行此操作,而https://www.mariyano.com/app-server/test/
则不支持JSONP。
答案 1 :(得分:1)
我认为您应该了解的一件事是JSON对象的格式。从它的外观来看,它看起来像这样:
{
"data": [
{"id":"83","name":"asdas"},
{"id":"86","name":"KKKK123"},
{"id":"85","name":"KKKK123"},
{"id":"82","name":"as"},
...],
"status":1,
"error":""
}
您的JSON对象中有3个字段,一个名为data
,一个名为status
,另一个名为error
。让我们关注data
字段。它似乎是一个巨大的数组,每个索引都有对象,每个对象包含id
和name
等字段。
回顾您的代码,您正在尝试打印json.data.id
。 json.data
很好,但当你说id
时......它不知道应该查看哪个id
,这就是它抛出语法错误的原因。
字段data
是一个数组,因此如果您想访问特定的id
,则必须执行此操作
json.data[0].id
并且它会为您提供第一个索引id
。
这至少解释了Uncaught SyntaxError: Unexpected token :
。
答案 2 :(得分:-2)
遵循此代码可能会对您有所帮助
<!DOCTYPE html>
<html>
<head>
<style>img{ height: 100px; float: left; }</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div id="images">
</div>
<script>
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
{
tags: "mount rainier",
tagmode: "any",
format: "json"
},
function(data) {
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});</script>
</body>
</html>