【发布时间】:2011-02-03 20:41:40
【问题描述】:
我试图让一个函数从另一个页面上的 php 文件中抓取一个对象。我正在使用 jQuery ajax 函数来进行 json 抓取,它工作正常。问题是当我尝试从函数中返回该对象时。
我第一次记录对象(从成功函数中)在控制台中是正确的,但从函数 getGantt() 返回的对象记录为“未定义”。
如何从函数中取出这个对象?
我的代码:
function getGantt(requestNumber){
var ganttObject;
$.ajax({
type: "POST",
url: "get_gantt.php",
data: {request_number: requestNumber},
success: function(returnValue){
ganttObject = $.parseJSON(returnValue);
console.log(ganttObject); //this logs a correct object in the console
}
});
return ganttObject;
}
$(function(){ //document ready function
var requestNumber = $('#request_number').text();
var ganttObject = getGantt(requestNumber);
console.log(ganttObject); //this logs "undefined"
}); //end document ready function
【问题讨论】:
-
您在 ajax 回调设置 ganttObject 之前返回一个变量。
-
AJAX 是异步运行的,您的
getGantt函数要等到 AJAX 进程完成后才会获取值,即返回发生后。您需要重组您的编程以 (a) 在成功函数中使用returnValue(b) 将 returnValue 存储在稍后可访问的全局/对象变量中(导致所需的触发/等待过程出现问题) -
感谢大家的所有回答; stackoverflow 非常快。 10 分钟内给出三个好答案!
标签: javascript jquery ajax function local-variables