将数据存储在post jquery的变量中

时间:2012-02-13 22:55:06

标签: jquery post return

我有这段代码:

function someFunction(something1, something2) {

    $.post("execute.php", { someData1: something1, someData2: something2 }, function(data) {

        returnData = data;

    });

    return returnData;

}

post函数返回false或true,我希望someFunction通过返回值进一步发送此信息,但它不起作用。我猜这个返回值在它发布之前返回所以有未定义,但我不知道该怎么办。

1 个答案:

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

}