返回结果

问题描述:

我想要一个发布到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以内,使函数能够返回呢?

+3

你不能,你需要提供一个回调。这是异步的。这是重复的,我只需要几秒钟就可以找到问题。 – davin

+0

其他几乎相同的问题: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

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); 
});