基本上,如果我在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中呢?几个小时都在争吵,并且由于某种原因,我一直在尝试所有的研究技巧。感谢大家的帮助到目前为止,我真的希望能够通过这个!
答案 0 :(得分: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;
});
});
希望有所帮助!