问题描述
|
本质上,如果我在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中呢?奋战了几个小时,出于某种原因尝试了我所有的研究技术,这使我难以理解。到目前为止,感谢大家的帮助,我真的很希望能通过这个!
解决方法
浏览器本机实现全局函数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;
});
});
希望有帮助!