0

我尝试将 ajax 响应放入变量中,稍后使用它,但它不起作用

这是我的代码

var retourn;    

var requestData = new Request ({
    url: 'dnscheck.php',
    async:false,
    onComplete: function(response){
        //alert(response); // this work good
        retourn = response;
    }
});

alert(retourn); // shows me undefined

mootools 1.2.4 版本

知道如何解决这个问题


清除历史并尝试多次后,它工作正常谢谢 Grim

var retourn;    

var requestData = new Request ({
    url: 'dnscheck.php',
    async:false,
    onComplete: function(response){
        //alert(response); // this work good
        retourn = response;
    }
});

requestData.send();
alert(retourn); // work fine
4

1 回答 1

1

请记住,ajax 调用是异步的,因此您的onComplete处理程序中的代码只会在调用返回时执行,而您的最终警报将在创建请求的代码之后立即执行(您必须从调用send方法开始,顺便说一句) - 此时变量将始终未初始化。

编辑:没有注意到你使用了 aync: false (顺便说一句,这通常是个坏主意......) - 你仍然需要发送请求

requestData.send();

编辑(2):另外,最好不要使用 onComplete 回调(它在响应返回时调用,甚至在检查实际返回的内容之前) - 而是使用 onSuccess 回调,并注意有很多原因响应可能会失败,因此您可能还想定义 onFailure 回调并在那里做一些事情。

    var retourn;    

    var requestData = new Request ({
        url: 'yoururl.php',
        async:false,
        onSuccess: function(response){
            retourn = response;
        },
        onFailure: function(xhr) {
            retourn = "failed";
        }
    });

    requestData.send();

            alert(retourn);
于 2013-02-14T12:20:09.310 回答