将jQuery ajax值传递回调用JavaScript函数

Und*_*ble 1 javascript ajax jquery

我将数据从JQuery ajax调用传递回调用位置时出现问题.有问题的代码如下:

jQuery("#button").click(function()
{   
    for(var i = 0;i < data.length; i++)
    {
        result = updateUser(data[i]); //result is not populated..
                    alert(result); //prints 'undefined'

    }
});

function updateUser(user_id)
{       
    jQuery.ajax({
        url:"/users/update/"+user_id,
        type:"GET",
        async: false,
        success: (function(data){           
            //if I alert "data" here it shows up correctly
                            //but if i try to return it like below 
                            //it does not get passed correctly 
                            return data; 
        })
    });
Run Code Online (Sandbox Code Playgroud)

任何指针都非常感谢

Viv*_*ath 5

您不能从这样的AJAX成功处理程序返回值.AJAX是异步因此执行将继续到下一行哪里resultundefined.从异步操作中获取数据的唯一方法是使用回调.回调是在异步操作完成它正在执行的操作时调用的函数:

jQuery("#button").click(function () {
    for (var i = 0; i < data.length; i++) {
        updateUser(data[i], function(result) {
            alert(result);
        });
    }
});

function updateUser(user_id, callback) {
    jQuery.ajax({
        url: "/users/update/" + user_id,
        type: "GET",
        success: callback
    });
}
Run Code Online (Sandbox Code Playgroud)

在这里,您将在AJAX调用的成功处理程序中调用回调,因此您现在可以访问AJAX调用返回的数据.