从异步函数中返回true函数

时间:2011-02-24 19:42:51

标签: 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函数的异步回调被触发之前,返回false已被触发,但我试图找到一种方法来实现它。我已经尝试将返回值设置为var并将该var返回给main函数,但是总是存在主函数不等待的异步函数的问题。

你知道一种很好的方法吗?

2 个答案:

答案 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();
    }
});