JQuery - 如何在ajax调用之外使用ajax调用的返回值

时间:2012-04-02 09:13:39

标签: jquery ajax

我有一个ajax电话。我将返回值(数据)放在一个名为mydata的变量中。我想在ajax调用之外使用该变量。请注意,我无法将代码合并到ajax调用的成功部分。我不会详细说明原因,因为它会增加混乱。所以问题很简单。有没有办法在ajax调用之外使用ajax调用的返回值?提前感谢您的回复。干杯。马克

$.ajax({
    type: "POST",
    url: "file.php",
    data: ajaxData,
    success: function(data) {
        var mydata = data;    
    }
});

alert(mydata); // -> This is not working

4 个答案:

答案 0 :(得分:3)

简短的回答:不,你不能,因为AJAX中的A代表“异步”,所以脚本不会“等待”AJAX调用完成。

如果需要,您可以使用间隔轮询来查看是否设置了mydata:

var mydata = null;

$.ajax({
    type: "POST",
    url: "file.php",
    data: ajaxData,
    success: function(data) {
        var mydata = data;    
    }
});

var timerId = setInterval(function() {
   if(mydata !== null) {
      // your code
      clearInterval(timerId);
   }
}, 1500); // change this to your liking, doesn't really matter

但是这假设file.php永远不会在数据中返回null

答案 1 :(得分:2)

嗯,我不建议在任何情况下使用全局变量,虽然我不确定你想在那里做什么,但是你可能希望将数据进程包装在一个函数中。

该代码工作正常,它只是异步,您的可变数据将在以后填充。尝试这样的事情来在控制台上查看您的数据:

var process(data) {
    // output your data
    console.log(data);
}

$.ajax({
    type: "POST",
    url: "file.php",
    data: ajaxData,
    success: process
});

答案 2 :(得分:1)

如果不工作,你的意思是你在警报中得到未定义或对象吗?

在您的示例中,数据将是返回的json对象。因此,您需要知道此对象的结构才能使用它。

例如,如果结构是:

data = {name =" Bob",location =" London"}

然后data.name将为您提供值Bob。

此外,mydata变量是jquery post函数的本地变量,您需要在函数外部定义它以在函数外部使用它。

答案 3 :(得分:0)

不能将回调值设置为js全局变量。您必须在回调堆栈中使用回调值。