首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ajax调用(jquery)中的回调没有按预期返回

ajax调用(jquery)中的回调没有按预期返回
EN

Stack Overflow用户
提问于 2015-07-07 16:10:56
回答 3查看 54关注 0票数 0

我想要实现的非常简单:将instagram的API中的对象放入一个变量中,这样我就可以随心所欲地玩它了。这就是我到目前为止所做的:

代码语言:javascript
运行
复制
$(document).ready(function() {
// initialize var already
var instagram_infos;

function get_instagram_feed(callback) {
    var client_id = 'f6014154300f41ec98aw8dw087e49096';
    var user_id = "1681116416";
    $.ajax({
        url: 'https://api.instagram.com/v1/users/'+user_id+'/media/recent/',
        dataType: 'jsonp',
        type: 'GET',
        data: {client_id: client_id},
        success: callback,
        error: function(data){
            console.log(data);
        }
    });
}

function callback_instagram(result) {
    instagram_infos = result;
}

get_instagram_feed(callback_instagram);

console.log(instagram_infos);
});

如您所见,我正在从我的成功ajax中传递一个回调函数,在我的回调中,我只想将从instagram返回的对象放在变量instagram_infos中。因此,这是不起作用的,当我console.log我的instagram_infos变量时,它说:未定义。我想这是AJAX异步调用的一个问题,但我不是这个=/仍在学习它的专家.我怎么才能解决这个问题?

EN

Stack Overflow用户

回答已采纳

发布于 2015-07-07 16:24:49

请记住,AJAX是异步的,因此,当没有返回数据,并且没有将值分配给instagram_infos变量时,您将输出到控制台。

您可以做的不是在AJAX方法中嵌套成功的回调,而是侦听诺言对象,这个对象本机由$.ajax()方法在jQuery中返回:

代码语言:javascript
运行
复制
$(document).ready(function() {

// Set up variables needed for AJAX call
var instagram_infos,
    client_id = 'f6014154300f41ec98aw8dw087e49096',
    user_id = '1681116416',
    get_instagram_feed = $.ajax({
        url: 'https://api.instagram.com/v1/users/'+user_id+'/media/recent/',
        dataType: 'jsonp',
        type: 'GET',
        data: { client_id: client_id }
    });

// Listen to promise object returned
get_instagram_feed
.done(function(data) {
    // When AJAX call is successful
    console.log(data);
    instagram_infos = data;
})
.fail(function(data) {
    // When AJAX call has failed
    console.log(data);
});

注意,当从instagram_infos函数外部访问时,.done()将返回null,但如果不返回正确的数据,则会返回正确的数据,因为.done()函数等待AJAX调用在触发前完成,因此将正确的值绑定到变量。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31273964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档