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

Jquery - why can't I access/set my var in $.ajax

本文关键字:访问 设置 var 我的 ajax 为什么 不能 Jquery      更新时间:2023-09-26

我有两个例子。请告诉我为什么我的变量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 以及如何改变这一事实。

AJAX 是异步的 - 因此,您的 .append 语句在设置help之前被命中。在成功方法中包含您的append

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

我猜根据您的评论,您想要实现的是这个......

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

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

doCallback方法。

function doCallback() {
    alert(help);
}

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