访问javascript全局变量

时间:2013-05-16 04:53:03

标签: javascript ajax

以下是我的JavaScript。如何将变量success设为全局变量,以便在ajax->成功中所做的更改反映在外部?

function foo() {  
    var success = false;  
    $.ajax({

        type: "POST",
        url: "",
        dataType: "xml",
        success: function(xml) {
            var code = parseInt($(xml).find("Response").attr("code"), 10);
            switch (code) {
                case 1:
                    success = false;
                    break;
                case 0:
                    success = true;
                    break;
            }
        }
    });
    return success;
}

2 个答案:

答案 0 :(得分:4)

传递success

中调用的回调函数
function makeCall(callback) {
    $.ajax({
        type: "POST",
        url: "",
        dataType: "xml",
        success: function(xml) {
            var code = parseInt($(xml).find("Response").attr("code"), 10);
            callback(!code);
        }
    });
}

makeCall(function (success) {
    alert(success);
});

这是异步编程/请求的工作方式。当然,另一种方法是将其作为同步请求,但有点失败了。

我缩小了switch的内容,因为您似乎想要01的相反布尔值。

答案 1 :(得分:0)

你所采用的方法是行不通的。 Ajax调用是异步的。这意味着它甚至会在实际GET被触发之前立即返回。因此,外部var(可以从成功回调内部访问,由于闭包)除了在返回之前在Ajax调用之前建立的值之外没有任何其他值。相反,您可以通过设置async:false以及$ .ajax中的其他值来同步指定Ajax调用,或者您可以重构代码以执行任何您想要执行的操作,如果函数通过将其置于成功回调。