无法从URL加载JSON

时间:2012-11-22 10:16:25

标签: javascript jquery json

我正在尝试加载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:意外的令牌:

3 个答案:

答案 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字段。它似乎是一个巨大的数组,每个索引都有对象,每个对象包含idname等字段。

回顾您的代码,您正在尝试打印json.data.idjson.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>