【发布时间】:2012-05-09 04:45:09
【问题描述】:
在其他一些堆栈用户的帮助下,我想出了这个:
我想使用一个外部 json 文件并想出类似的东西:
我现在链接的文件是:http://www.lofiz.co.uk/afba/songkickwidget/testjsondata.json,但这最终会变成一个 Songkick JSON 输出。
【问题讨论】:
标签: javascript json jquery
在其他一些堆栈用户的帮助下,我想出了这个:
我想使用一个外部 json 文件并想出类似的东西:
我现在链接的文件是:http://www.lofiz.co.uk/afba/songkickwidget/testjsondata.json,但这最终会变成一个 Songkick JSON 输出。
【问题讨论】:
标签: javascript json jquery
您是same-origin policy 的受害者。出于安全原因,浏览器默认会阻止跨域获取的 JSON。如果您需要跨域获取数据,则必须实现服务器端代理,或者使用JSONP(如果数据也以该格式提供)。如果源没有提供 JSONP 格式的数据,我相信你可以使用YQL 来转换它。
关于 JSONP 的资源:@987654324@
更新:你的 URL 会这样调用:
$(function(){
var url = "https://api.songkick.com/api/3.0/artists/253846/calendar.json?apikey=HlgKnFaq9qYO1h9T&jsoncallback=?";
$.getJSON(url, function(data){
// Do what you want to do with the return data within this callback
console.log(data);
});
});
更新 2:
我已更新您的 JSFiddle 以使用 getJSON()。我还冒昧地进行了一些其他更改:
.getDay() 用于返回星期几(0 = 星期日,1 = 星期一等),因为我相信你想要一个月中的哪一天,你应该使用 .getDate() 代替。请参阅我的 JSFiddle。【讨论】:
var month = new Array(); 更改为var month = [];,你应该没问题。你的方法也是正确的,但是 JSLint 更喜欢数组文字表示法。
.getJSON() 的工作小提琴再次更新了我的答案,并且还进行了一些其他改进。