0

本质上,如果我在 Firebug 中查看网络对象,我会看到状态 200

如果我单击 JSON 选项卡,我可以看到我的 access_token,但是如何从那里提取它以便用于 API 调用?

这是尝试的最新代码。

var jsonUrl = url +"&callback=?";
var access_token;

$("#getJSON").click(function() {
    $.getJSON(jsonUrl, { dataType: "JSONP" }, function(json){ 
        ...
        access_token = json.access_token;
        ...
    });
});

也试过:

$.ajax({
  dataType: 'jsonp',
  jsonp: 'callback',
  url: url,
  success: function (json) {
    console.log(json.access_token);
  },
});

但是当我尝试提醒(access_token)时;或运行foursquare api调用我收到以下错误

Resource interpreted as Script but transferred with MIME type application/json. 

Uncaught SyntaxError: Unexpected token : checkinsGET https://api.foursquare.com/v2/users/self/checkins?oauth_token=undefined&format=json 401 (Unauthorized)

我觉得它已经准备好等待我调用它,但是我到底如何将它从 Dom 打印到我可以使用的 var 中?打了好几个小时,一直在尝试我所有的研究技术,出于某种原因,这个让我感到困惑。到目前为止感谢大家的帮助,我真的希望通过这个!

4

1 回答 1

1

浏览器本身实现了一个全局函数 JSON.parse(),如果由于某种原因不起作用,您可以使用 jQuery 的 parseJSON() 函数。

这是它的工作原理。假设您的 JSON 对象具有以下格式:

{
    Status: "Success",
    Resource: {
        Name: "Person's Name",
        URL: "http://blahblahblah.com/extrastuffhere?querystuff=here"}}

然后您可以使用 JSON.parse() 访问“URL”元素,如下所示:

var url = JSON.parse(json).Resource.URL;

(我对 Foursquare 不熟悉,但它应该看起来很相似,你可以执行 console.log(json) 来查看它的结构。)

所以你的代码可能看起来像这样:

$("#getJSON").click(function() {
    $.getJSON(jsonUrl, { dataType: "JSONP" }, function(json){ 
        var parsed = JSON.parse(json);
        console.log(parsed);
        access_token = parsed.access_token;
    });
});

希望有帮助!

于 2011-12-17T18:21:29.547 回答