jquery - 从异步函数中向函数返回 true

标签 jquery json asynchronous return-value

我正在提交表单并获取 JSON 作为响应。我的目标是仅在收到的 json.ok 值等于 true 时才提交表单。

$("form").submit(function() {
var _this = $(this);
// send request to server, validate json, if ok return true
$.getJSON("/", ($(this).serialize()), function(json) {
    if (json.ok == true) {
        return true;
    }
});
return false;
});

我知道它不会那样工作,因为在 getJSON 函数的异步回调被触发之前 return false 已经被触发,但我正在尝试找出一种方法来做到这一点。我已经尝试将返回值分配给一个 var 并将该 var 返回给 mainfunction,但是总是存在 mainfunction 不等待的异步函数的问题。

您知道实现这项工作的好方法吗?

最佳答案

使用异步调用无法返回 true。

您需要做的大部分已经存在 - 检查值,然后如果可以,则只需再次提交表单即可,而不是“return true;”。

您可能需要在提交之前解绑 onsubmit 事件。

尝试替换“return true;”与“_this.unbind('submit').submit();”

关于jquery - 从异步函数中向函数返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109610/

相关文章:

javascript - 提交前执行javascript

javascript - 在 html 表中动态渲染非结构化 JSON 数据

c# - ContinueWith 作为 await 运算符的替代

javascript - 我可以在页面其余部分加载后加载 JavaScript 代码吗?

java - 删除剩余参数

.net - 是否有 Control.BeginInvoke 的变体可以在句柄销毁之前/之后工作?

javascript - 动画标题 Bootstrap 3 轮播

javascript - 打开一个新选项卡并写一些东西

javascript - 为什么我的表单提交并忽略验证?

json - MacVim json 双引号