代码之家  ›  专栏  ›  技术社区  ›  gurun8

jQuery用AJAX验证表单

  •  1
  • gurun8  · 技术社区  · 14 年前

    我正在尝试使用AJAX调用验证一个表单,以检查可用的库存。如果库存检查有错误,它会返回一个消息,如果没有,表单应该提交。

    我有以下代码:

    $("form[id*='distributor_']").submit(function(){
        return checkAvailableInventory($(this));
    });
    
    function checkAvailableInventory(form) {
        $.ajax({
            url: "/ajax/quantity.php?" + form.serialize(),
            success: function(msg) {
                if (msg) {
                    alert(msg);
                    return false;
                } else {
                    return true;
                }
            }
        });
    }
    

    我怀疑这个问题是由于AJAX的异步特性造成的,success:子句在checkAvailableInventory()生命周期结束之后才会触发。

    有人对解决这个问题有什么建议吗?我见过一些人使用超时的例子,但这似乎是一个解决可能的问题。

    2 回复  |  直到 14 年前
        1
  •  2
  •   spinon    14 年前

    一种选择是使调用非异步。你可以设置 async 正确到错误。默认情况下为真。但不确定调用需要多长时间,因为它可能会在完成之前锁定浏览器。

    EDIT:另一个选项是从进行ajax调用的方法返回false。然后,在success方法中,当它到达那里时,您可以从表单中解除提交功能的绑定,然后只调用form.submit,它就可以在没有验证的情况下正常地发布到任何地方。

        2
  •  0
  •   Patricia    14 年前

    您可能想查看jQuery验证插件!它的使用非常简单,并且可以很好地处理远程验证。

    http://bassistance.de/jquery-plugins/jquery-plugin-validation/ 远程验证的文档: http://docs.jquery.com/Plugins/Validation/Methods/remote#options