【问题标题】:Store data in variable from post jquery将数据存储在来自post jquery的变量中
【发布时间】:2023-03-09 19:09:01
【问题描述】:

我有这个代码:

function someFunction(something1, something2) {

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

        returnData = data;

    });

    return returnData;

}

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

【问题讨论】:

标签: jquery post return


【解决方案1】:

ajax 调用是异步的,这意味着它会“不碍事”地运行。该函数立即执行并返回,javascript 继续其愉快的方式,而 ajax 调用则“不碍事”地执行。

这就是它返回未定义的原因,因为它不是。

为防止这种行为,您需要将其设置为“同步”。并且需要在函数作用域之外定义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;

}

【讨论】:

  • 很好的答案,非常感谢,正是我所需要的。解释一切。
  • 建议停止使用同步调用,不要这样做。
猜你喜欢
  • 1970-01-01
  • 2012-08-27
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多