我试图返回一个Instagram API网址字符串。不是对象,不是数据,但是当调用getUrl()
时,它会返回一个字符串,然后我可以在getJSON中使用它。
棘手的是,感谢Instagram API,我首先需要从用户名生成用户ID(这是你看到的getJSON,顺便说一下工作正常),将该ID存储为user_id,然后将该ID插入我的字符串。
我理解我目前所处的工作是不正常的,因为ajax是异步的,而且因为user_id的使用超出了范围。所以我的问题是......我需要做什么?我觉得我很接近。
var username = foo;
var client_id = 1234567890;
function getUrl() {
function getUserID() {
return 'https://api.instagram.com/v1/users/search?q=' + username + '&callback=?&client_id=' + client_id;
}
$.getJSON(getUserID(), function (data) {
var user_id = data.data[0].id;
});
return 'https://api.instagram.com/v1/users/' + user_id + '/media/recent/?&client_id=' + client_id;
}
console.log(getUrl);
答案 0 :(得分:1)
你需要做的是写一个回调函数,它将使用你的ajax调用的结果。此函数将从getUrl()
内的异步调用接收正确的url,因此在回调函数中添加需要url的任何代码,它将在$.getJSON
完成后立即执行。
var username = foo;
var client_id = 1234567890;
function getUrl(getURLCallBack) {
var user_id = 'https://api.instagram.com/v1/users/search?q=' + username + '&callback=?&client_id=' + client_id;
$.getJSON(user_id, function (data) {
user_id = data.data[0].id;
var url = 'https://api.instagram.com/v1/users/' + user_id + '/media/recent/?&client_id=' + client_id;
//Your callback function will do the magic for you
getURLCallBack(url);
});
}
//In this example, f will be your callback
f = function (url) {
alert(url);
}
getUrl(f);