【问题标题】:$.getJSON syntax issue$.getJSON 语法问题
【发布时间】:2014-03-22 21:50:48
【问题描述】:

我正要挖出我的眼睛吃掉它们。我正在尝试从 flickr 中提取数据,但显然我不知道自己在做什么。

这行得通:

var flickrAPI = "https://api.flickr.com/services/rest/api_key=xxxxx";
$.get(flickrAPI, 
{
method: "flickr.photosets.getList",
format: "json",
user_id: "xxxxx"
}, alert("ok")
);

我收到“好的”警报 但是,当我尝试使用 function() {} 代替 alert()...

var flickrAPI = "https://api.flickr.com/services/rest/api_key=xxxxx";
$.get(flickrAPI, 
{
method: "flickr.photosets.getList",
format: "json",
user_id: "xxxxx"
}, function(data) {alert("ok");}
);

什么都没有发生。

另外,如果我将 $.get 的返回值分配给一个变量,我会得到以下 JSON 对象:

{"readyState" : "1"}

这不是我想要的。有任何想法吗?值得注意的是,我正在使用的 html 文件是本地文件。

谢谢

【问题讨论】:

  • 您是否使用开发者工具检查了请求?可能是同源问题。
  • 啊哈!它是相同的起源问题。我什至不知道那是一回事。非常感谢你引导我朝着正确的方向前进。
  • 我刚刚创建了一个包含更多信息的答案,您可能想检查一下 :)
  • 您的警报运行仅是因为它在 flickrAPI 调用甚至发送之前立即执行。您将需要使用 JSONP 与 flickr 进行通信。

标签: jquery ajax json flickr


【解决方案1】:

由于same-origin policy,您无法使用 AJAX 从其他主机检索数据。

如果其他主机支持,可以使用jsonp。在jQuery manual 中解释了如何将jsonp 与jQuery 一起使用。在 Flickr 的特定情况下,有一个 blogpost 解释如何将 jsonp 与 flickr 一起使用。

【讨论】:

  • 太棒了。谢谢你的链接,你是男人!我也有点假设从 file:/// 运行这一切可能是问题的很大一部分
【解决方案2】:

因为它是 API,我假设它有 Access-Control-Allow-Origin 标头,所以这应该可以工作

$.ajax({
  url: "https://api.flickr.com/services/rest/api_key=xxxxx",
  data: {
    method: "flickr.photosets.getList",
    format: "json",
    user_id: "xxxxx"
    },
  success: function(data) {alert("ok");},
  dataType: "json"
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多