返回结果

时间:2011-09-25 13:02:21

标签: javascript jquery

我想要一个发布到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中,以便函数可以返回它?

2 个答案:

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