Jquery - 为什么我不能在$ .ajax中访问/设置我的var

时间:2013-10-31 13:13:25

标签: javascript jquery ajax variables

我有两个例子。请告诉我为什么我的变量help在此示例中没有按预期工作。我检查它是否正在进入循环。

结果:undefined

function autopop(){
    var help;
    $.ajax({
        type : "POST",
        url : "/cgi-bin/my.pl",
        data : "action=autopop",
        dataType : "json",
        success : function(data) {
            for (var i = 0; i < data.length; i++) {
                help = "test";
            }
        }
    );

    $("#id").append(help);
}

结果:test

function autopop() {
    var help = "test";
    $.ajax({
        type : "POST",
        url : "/cgi-bin/my.pl",
        data : "action=autopop",
        dataType : "json",
        success : function(data) {
            for (var i = 0; i < data.length; i++) {
                help = "blub";
            }
        }
    );

    $("#id").append(help);
}

请告诉我为什么我无法从这个ajax / loop组合中访问我的var,以及如何改变这个事实。

3 个答案:

答案 0 :(得分:3)

AJAX 异步 - 因此,在设置.append之前,您的help语句被点击了。在成功方法中加入append

success : function(data) {
    for(var i = 0; i < data.length; i++){
        help="test";
    }
    $("#id").append(help);
}

答案 1 :(得分:1)

我猜你根据你的评论想要实现的目标是......

success : function(data) {
    $("#id").append(data);
}

success : function(data) {
    help = data;
    doCallback();
}

使用doCallback方法。

function doCallback() {
    alert(help);
}

答案 2 :(得分:0)

你没有得到预期的结果,因为你的ajax调用会激活并继续执行你的代码$("#id").append(help); 在成功编写的代码之前执行,设置帮助变量。