getJSON 错误 - 不知道哪里出错了

Posted

技术标签:

【中文标题】getJSON 错误 - 不知道哪里出错了【英文标题】:getJSON error - not sure where I'm going wrong 【发布时间】:2012-05-09 04:45:09 【问题描述】:

在其他一些堆栈用户的帮助下,我想出了这个:

http://jsfiddle.net/9ywLq/

我想使用一个外部 json 文件并想出类似的东西:

http://jsfiddle.net/RCB9M/

我现在链接的文件是:http://www.lofiz.co.uk/afba/songkickwidget/testjsondata.json,但这最终会变成一个 Songkick JSON 输出。

【问题讨论】:

【参考方案1】:

您是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()。我还冒昧地进行了一些其他更改:

    我修改了您定义月份名称数组的方式,使其更具可读性。 javascript 中的.getDay() 用于返回星期几(0 = 星期日,1 = 星期一等),因为我相信你想要一个月中的哪一天,你应该使用 .getDate() 代替。请参阅我的 JSFiddle。

【讨论】:

感谢您这么快的回答,我在 Songkicks 网站 (songkick.com/developer/upcoming-events-for-artist) 上读到了相关信息。这个 URL 合适吗(api.songkick.com/api/3.0/artists/253846/…),如果合适的话,你能在 jsfiddle 链接上告诉我吗? 谢谢你,我想我现在清楚一点了——我希望能够及时正确地学习这个。所以目前我有这个:jsfiddle.net/Pr2GU JSLint 说 var month = new Array(); 中有一个错误。行,但我不明白如何使它工作。 @redditor 将var month = new Array(); 更改为var month = [];,你应该没问题。你的方法也是正确的,但是 JSLint 更喜欢数组文字表示法。 我想我现在理解了 getJSON,您是否可以使用正确的 getJSON 调用方式为我编辑它?谢谢jsfiddle.net/9ywLq @redditor 我已经用一个使用.getJSON() 的工作小提琴再次更新了我的答案,并且还进行了一些其他改进。

以上是关于getJSON 错误 - 不知道哪里出错了的主要内容,如果未能解决你的问题,请参考以下文章

fs 库:使用时出错

getJSON 在 chrome 上本地加载 json 数据文件时出错 [重复]

java 求二叉树的叶子结点,下面的代码不知道哪里出错了!

请问这段python代码哪里出错了,错误代码:ValueError: invalid literal for int() with base 10: ','?

npm 安装时出错

VBA代码是实现筛选从当前时间起7天之内数据,但是运行后筛选不出来,不知道问题在哪里出错了