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

emi*_*l.c 1 jquery post return

我有这个代码:

function someFunction(something1, something2) {

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

        returnData = data;

    });

    return returnData;

}
Run Code Online (Sandbox Code Playgroud)

Post函数返回false或true,我希望someFunction通过返回值进一步发送此信息,但它不起作用.我猜这个返回值在它发布之前返回所以有未定义,但我不知道如何处理它.

Vig*_*ond 7

ajax调用是异步的,这意味着它"运行".该函数被执行并立即返回,javascript以其快乐的方式继续,而ajax调用则"完全"执行.

这就是为什么它返回undefined,因为它不是.

要防止出现这种情况,您需要将其设置为"同步".您需要在函数范围之外定义returnData.

您可以通过设置来完成此操作

$.ajaxSetup({async:false});
Run Code Online (Sandbox Code Playgroud)

然后调用$ .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;

}
Run Code Online (Sandbox Code Playgroud)