从$ .ajax请求中获取变量

时间:2012-02-03 22:26:44

标签: jquery

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

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

但myvar未设置为成功后记录时的状态。如何通过函数重新调整该变量?

3 个答案:

答案 0 :(得分:3)

ajax调用是异步的,所以它并行发生,这是你没有得到结果的原因

您不能像这样返回值 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
        }
    })
}

答案 1 :(得分:2)

$.ajax是异步的,这意味着在下一行执行之前它还没有完成。发生的事情是return myVar;success事件触发之前执行。

关闭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.
        }
    })
}

答案 2 :(得分:2)

您无法从AJAX调用返回值。这是异步的。 return在AJAX调用完成之前运行。

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