返回结果
问题描述:
我想要一个发布到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;
}
但是,上述返回未定义。如果我把alert(result)
放在函数的一部分里面$.post
,我可以看到结果。但是,如果我从另一个JavaScript文件调用函数,则返回值return_val是'未定义的'。我怎样才能把$.post
的结果放在return_val
以内,使函数能够返回呢?
答
AJAX是异步的意思,当你的函数返回结果可能还没有到达。您只能使用success
回调中的结果。根据AJAX调用的结果,让JavaScript执行AJAX请求返回值是没有意义的。
如果您需要利用的结果简单地调用一些其他的功能,在success
回调:
function sumValues(number1, number2) {
$.post("sum_values.php", { number1: number1, number2: number2 },
function(result) {
callSomeOtherFunction(result);
});
}
和内部callSomeOtherFunction
你可以显示的结果某处DOM。
答
$ .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);
});
你不能,你需要提供一个回调。这是异步的。这是重复的,我只需要几秒钟就可以找到问题。 – davin
其他几乎相同的问题:http://*.com/questions/3732258/why-can-i-not-return-responsetext-from-an-ajax-function http://*.com/questions/290214/in -ajax-how-to-retrive-variable-from-inside-of-onreadystatechange-function http://*.com/questions/1955248/how-to-return-variable-from-the-function-called-by- onreadystatechange-function http://*.com/questions/562412/return-value-from-function-with-an-ajax-call – davin