Jquery 从$.ajax请求中获取变量

Jquery 从$.ajax请求中获取变量,jquery,Jquery,我想在函数中运行ajax请求。基本上 function doIt(id) { var myVar; $.ajax({ ... url etc... success: function(result) { myVar = "Some stuff" + result; console.log(myVar); } }) return myVar; } 但myvar并没有设置

我想在函数中运行ajax请求。基本上

function doIt(id) {
    var myVar;
    $.ajax({
        ... url etc...
        success: function(result) {
            myVar = "Some stuff" + result;
            console.log(myVar);
        }
    })
    return myVar;
}

但myvar并没有设置为我在成功后登录时的状态。如何获取函数返回的变量?

$。ajax是异步的,这意味着它在执行下一行之前不会完成。现在发生的是
返回myVar
成功
事件触发之前执行

关闭
async
属性,这将从表面上解决您的问题:

function doIt(id) {
    var myVar;
    $.ajax({
        ... url etc...,
        async: false,
        success: function(result) {
            myVar = "Some stuff" + result;
            console.log(myVar);
        }
    })
    return myVar;
}
但是,这会使浏览器挂起,因此最好的方法是将所有处理放在
success
事件中

function doIt(id) {
    var myVar;
    $.ajax({
        ... url etc...,
        async: false,
        success: function(result) {
            myVar = "Some stuff" + result;
            console.log(myVar);
            // TODO: Everything related to `myVar` here.
        }
    })
}

$.ajax
是异步的,这意味着它在执行下一行之前不会完成。现在发生的是
返回myVar
成功
事件触发之前执行

关闭
async
属性,这将从表面上解决您的问题:

function doIt(id) {
    var myVar;
    $.ajax({
        ... url etc...,
        async: false,
        success: function(result) {
            myVar = "Some stuff" + result;
            console.log(myVar);
        }
    })
    return myVar;
}
但是,这会使浏览器挂起,因此最好的方法是将所有处理放在
success
事件中

function doIt(id) {
    var myVar;
    $.ajax({
        ... url etc...,
        async: false,
        success: function(result) {
            myVar = "Some stuff" + result;
            console.log(myVar);
            // TODO: Everything related to `myVar` here.
        }
    })
}

ajax调用是aysnc,因此它并行发生,这就是您无法获得结果的原因

不能像那样返回值
var-myVar

function doIt(id) {

    $.ajax({
        ... url etc...
        success: function(result) {
            myVar = "Some stuff" + result;
            console.log(myVar);
            // do your logic here after the ajax success
        }
    })
}

ajax调用是aysnc,因此它并行发生,这就是您无法获得结果的原因

不能像那样返回值
var-myVar

function doIt(id) {

    $.ajax({
        ... url etc...
        success: function(result) {
            myVar = "Some stuff" + result;
            console.log(myVar);
            // do your logic here after the ajax success
        }
    })
}

不能从AJAX调用返回值。它是异步的。
return
在AJAX调用完成之前运行


您需要在回调中执行与
myVar
相关的所有逻辑。

您不能从AJAX调用返回值。它是异步的。
return
在AJAX调用完成之前运行


您需要在回调中执行与
myVar
相关的所有逻辑。

@justing,async false不是一个好方法,因为它会阻止用户直到完成,而不是在成功中执行您的操作。这通常是一个糟糕的主意,因为浏览器将挂起直到请求完成。这样做有一些原因,但没有多少好的原因。
async:false
将锁定浏览器,直到调用完成。我建议不要这样做。相反,我建议您更改使用
myVar
值的方式。@justing,async false不是好办法,因为它会阻止用户直到完成,而不是在成功中执行操作。这通常是一个糟糕的主意,因为浏览器将挂起直到请求完成。这样做有一些原因,但没有多少好的原因。
async:false
将锁定浏览器,直到调用完成。我建议不要这样做。相反,我建议更改使用
myVar
值的方式。