ajax调用是异步的,这意味着它运行'的方式'。该函数被立即执行并返回,并且javascript继续其快乐的方式,而ajax调用被“执行”。
这就是为什么它返回undefined,因为它不是。
为了防止这种行为,您需要将其设置为'同步'。你需要在函数的范围之外定义returnData。
您可以通过设置
$.ajaxSetup({async:false});
,然后调用$。员额做到这一点,
或者你可以因此,使用第一种方法做$.ajax(... {async:false}...);
:
function someFunction(something1, something2) {
$.ajaxSetup({async:false}); //execute synchronously
var returnData = null; //define returnData outside the scope of the callback function
$.post("execute.php", { someData1: something1, someData2: something2 }, function(data) {
returnData = data;
});
$.ajaxSetup({async:true}); //return to default setting
return returnData;
}
我想应该加入一些关于AJAX请求异步性质的好答案jquery常见问题http://stackoverflow.com/tags/jquery/info – zerkms 2012-02-13 23:00:52