我想要一个发布到php的JavaScript函数,并返回该值,以便从JavaScript中的另一个函数调用该函数为我提供了值。为了更好地说明,请查看我当前的代码:
function sumValues(number1, number2) {
var return_val;
$.post("sum_values.php", {number1: number1, number2: number2},
function(result) {
return_val = result;
});
return return_val;
}
但是,上面的内容是返回undefined。如果我将alert(result)
放在$.post
的功能部分中,我可以看到结果。但是,如果我从另一个JavaScript文件调用该函数,则返回值return_val为'undefined'。如何将$.post
中的结果放在return_val
中,以便函数可以返回它?
答案 0 :(得分:5)
AJAX是异步的意思是,当你的函数返回结果时,可能还没有到达。您只能在success
回调中使用结果。让javascript执行AJAX请求以根据此AJAX调用的结果返回值是没有意义的。
如果您需要利用结果,只需调用success
回调中的其他一些函数:
function sumValues(number1, number2) {
$.post("sum_values.php", { number1: number1, number2: number2 },
function(result) {
callSomeOtherFunction(result);
});
}
在callSomeOtherFunction
内,您可以在DOM中的某处显示结果。
答案 1 :(得分:3)
$ .post默认为异步(docs)。您可以传递async:false
选项(阻止浏览器,而不是良好的用户体验),或者您应该考虑使用回调函数(更好的恕我直言)。
function sumValues(number1, number2,callback) {
$.post("sum_values.php", {number1: number1, number2: number2},callback);
}
sumValues(1,3,function(result){
doSomething(result);
});