2012-11-22 105 views
0

我想加载JSON并提醒它,但我无法做到这一点。我很困惑已经做到了这一点,但现在它不工作。一个简单的小提琴将是有益的,这是我试了一下:无法从URL加载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

未捕获的SyntaxError:意外的标记:

回答

2

你不能没有circumventing the same-origin policy访问另一个域中的数据。

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

+0

是否有任何解决方法,为此不使用jsonp –

+1

您需要使用serverside脚本来请求代码,然后使用您的jquery来请求本地脚本。 – chris

+0

你使用什么ss脚本? PHP? – chris

-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> 
+0

帮不了多少 –

+2

我看不出它应该如何帮助。这是访问完全不同的web服务的大量代码。 – Quentin

1

我认为你应该了解的一件事是你的JSON对象的格式。从它的外观,它看起来像这样:

{ 
    "data": [ 
    {"id":"83","name":"asdas"}, 
    {"id":"86","name":"KKKK123"}, 
    {"id":"85","name":"KKKK123"}, 
    {"id":"82","name":"as"}, 
    ...], 

    "status":1, 

    "error":"" 
} 

你有叫data您的JSON对象,一个3个字段,一个叫status,和一个叫error。我们专注于data字段。它似乎是一个巨大的阵列,每个索引都有对象,每个对象都包含idname等字段。

回想一下您的代码,您正在尝试打印json.data.idjson.data是好的,但当你说id ...以及它不知道它应该看哪个id,这就是为什么它会引发语法错误。

领域data是一个数组,所以如果你想访问特定id你不得不做

json.data[0].id,并且愿意给你的第一个索引的id

这至少解释了Uncaught SyntaxError: Unexpected token :

+0

我试图在这个小提琴[链接] http://jsfiddle.net/YHPxs/2/但仍然存在相同的错误 –

+1

我试图玩弄它,但我不完全确定它为什么会抛出语法错误。您可能需要[jQuery.parseJSON](http://api.jquery.com/jQuery.parseJSON/) 'responseText'在与网站交互之前,但是需要ajax我相信如果你没有访问服务器,那可能很难,我建议在解决语法错误之前找到第一个错误的解决方法。虽然,你的'data'字段是一个数组,所以它是重要的吨来对待它像一个:) – aug