从另一个网站获取json

时间:2013-11-24 21:56:28

标签: jquery json

这是我第一次在jquery中处理json。我面临一些问题,当我打开时:

http://localhost:3000/calendar/termine/24-11-2013

在我的浏览器中,我得到:

[{"id":73539,"name":"Anneliese","input":"18-40"},{"id":73537,"name":"Appolonia","input":"14-20"}]

因此,当我只是复制它并将其作为变量时,我的代码就可以了:

 var array = [{"id":73539,"name":"Anneliese","input":"18-40"},{"id":73537,"name":"Appolonia","input":"14-20"}]

然后我尝试使用jquery:

var array = $.getJSON("/calendar/termine/24-10-2013");

这不知道怎么办?我错了什么?

当我打开页面..termine/24-10-2013时,输出看起来像这样,所以现在我不是百分之百确定它是否真正的json:

<html>

    <head> … </head>
    <body>
        <pre>

            [{"id":null,"name":"sara","input":"11"},…

        </pre>
    </body>

</html>

3 个答案:

答案 0 :(得分:2)

$.getJSON() method documentation中所述,它不会返回结果,而是返回jqXHR个对象。您需要提供一个回调来接收结果,并且因为异步调用回调,您需要在那里处理结果:

$.getJSON("/calendar/termine/24-10-2013", function(array) {
     // do something with array here
});
  

“来自其他网站”

如果您确实尝试从其他域检索数据,那么由于same origin policy会出现问题,但在您的示例中,您使用的网址似乎是与页。如果它是一个不同的域,你可以使用JSONP,如果另一个域支持它 - 当然如果你控制那个页面,你可以自己实现JSONP作为一个选项。

答案 1 :(得分:1)

您必须等待响应,然后设置变量。

var array;

$.getJSON("/calendar/termine/24-10-2013", function(data){
     array = data;
});

答案 2 :(得分:0)

你必须获取json数据,然后解析它然后循环并使用以下方式获取它: -

$('document').ready(function(){
    jQuery.get("your/url/that/get/json/",function(data) {
     data = jQuery.parseJSON(data);
     jQuery.each(data, function(key, value) {                   
    jQuery('#dataContainer').append(value.id+"<br>"+value.name);
    });
});

假设您有任何html区域<div id="dataContainer"></div>

希望这有用。