小编典典

等待jQuery $ .get函数完成,然后再运行代码

ajax

在下面,该return语句在调用完成 之前 被执行$.get()。我该如何更改?

var aft = {};

aft.getToken = function (url) {

    var theToken;

    //Get the token value
    $.get(url, function (data) {

        theToken = $(data).find('input[name=__RequestVerificationToken]').val();

    }, "html");

    return theToken;

};

阅读 947

收藏
2020-07-26

共1个答案

小编典典

您不能-至少不明智。虽然async可以在jQuery ajax请求上设置一个属性,但过去在尝试将其与值一起使用时遇到了
严重的问题false

尝试重新考虑您要完成的工作:

var aft = { yourToken: '' };

aft.setToken = function (url, callback) {
    $.get(url, function (data) {
        this.yourToken = $(data).find('input[name=__RequestVerificationToken]').val();

        if (callback)
           callback.apply(this);
    }, "html");
};

然后:

aft.setToken("url.php", function() {
   alert("Token retrieved = " + this.yourToken);
});

或者,如果您的回调 需要访问返回的数据,那么您可以更简单地执行

if (callback)
    callback(data);

然后

aft.setToken("url.php", function(dataReturned) {
   alert("Ajax data retrieved = " + dataReturned);
});
2020-07-26