0

我正在尝试加载 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: Unexpected token :

4

3 回答 3

2

在不规避同源策略的情况下,您无法访问另一个域上的数据。

除非您正在访问的服务支持 JSONP,否则您不能使用 JSONP 来执行此操作,而 JSONPhttps://www.mariyano.com/app-server/test/不支持。

于 2012-11-22T10:26:26.250 回答
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 :.

于 2012-11-22T10:32:52.840 回答
-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>
于 2012-11-22T10:20:41.347 回答