我有这段代码:
function someFunction(something1, something2) {
$.post("execute.php", { someData1: something1, someData2: something2 }, function(data) {
returnData = data;
});
return returnData;
}
post函数返回false或true,我希望someFunction通过返回值进一步发送此信息,但它不起作用。我猜这个返回值在它发布之前返回所以有未定义,但我不知道该怎么办。
答案 0 :(得分:7)
ajax调用是异步的,这意味着它会“运行”。该函数被执行并立即返回,javascript继续以其快乐的方式,而ajax调用被“完全”执行。
这就是为什么它返回undefined,因为它不是。
要防止此行为,您需要将其设置为“同步”。并且您需要在函数范围之外定义returnData。
您可以通过设置
来执行此操作$.ajaxSetup({async:false});
然后调用$ .post,
或者你可以$.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;
}