一尘不染

Ajax完成后获取变量

ajax

我有以下代码可以向服务器发出请求:

function myAjaxCheck(token) {
        $.ajax({
            type: 'POST',
            url: 'auth.php',
            data: {
                token: token,
            },
            dataType: 'json',
            success: function (data) {
                if (data.auth == 'OK') {
                    alert ('ok');
                    }
                } else {
                    alert('Error: ' + data.auth);
                }
            }
        }).done(function (data) {
            return data;
        });
    }

因此,我需要将返回的数据传递给一个像这样的变量:

Var MyVariable = myAjaxCheck(token);
console.log(MyVariable);

在控制台上:

未定义

问题出在哪里,应该在完成后返回数据,但不是。


阅读 356

收藏
2020-07-26

共1个答案

一尘不染

默认情况下,ajax()请求是异步的,因此ajax()通常会在请求完成之前返回对的调用。您可以改用回调函数。

function myAjaxCheck(token, callback) {
        $.ajax({
            type: 'POST',
            url: 'auth.php',
            data: {
                token: token,
            },
            dataType: 'json',
            success: function (data) {
                if (data.auth == 'OK') {
                    alert ('ok');
                    }
                } else {
                    alert('Error: ' + data.auth);
                }

                callback(data);
            }
        });
    }

var myVariable; 
 myAajxCheck(token, function(returnedData){ //anonymous callback function
    myVariable = returnedData;
    console.log(myVariable);
 });

如果绝对必要,则可以async: false在中调用ajax()

2020-07-26