我正在提交表单并获取 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/