我正在提交表单并将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函数的异步回调被触发之前,返回false已被触发,但我试图找到一种方法来实现它。我已经尝试将返回值设置为var并将该var返回给main函数,但是总是存在主函数不等待的异步函数的问题。
你知道一种很好的方法吗?
答案 0 :(得分:2)
使用异步调用无法返回true。
你需要做的事情大部分已经存在 - 检查值,然后如果确定,而不是“return true;”,你只需再次提交表格。
在提交之前,您可能需要取消绑定onsubmit事件。
尝试替换“return true;”用“_this.unbind('submit')。submit();”
答案 1 :(得分:0)
您要做的是使用回调函数来执行提交。
// send request to server, validate json, if ok return true
$.getJSON("/", ($(this).serialize()), function(json) {
if (json.ok == true) {
$("form").submit();
}
});