Javascript jQuery中基于ajax响应的表单提交

Javascript jQuery中基于ajax响应的表单提交,javascript,jquery,ajax,Javascript,Jquery,Ajax,我使用jQuery并阻止表单的提交,然后根据ajax响应提交表单。我发现的问题是我经常要提交两次表格。第一次,它显示了加载程序,但它似乎没有调用ajax成功函数中的任何操作。如果我再次单击它,它将提交(如果已验证)。在我经历了这一切之后,它第一次似乎也起了作用。所以如果我再试一次,第一次就会成功。那么可能是缓存问题?以下是我的javascript: $('#submit_zipcode_frm').submit(function(event){

我使用jQuery并阻止表单的提交,然后根据ajax响应提交表单。我发现的问题是我经常要提交两次表格。第一次,它显示了加载程序,但它似乎没有调用ajax成功函数中的任何操作。如果我再次单击它,它将提交(如果已验证)。在我经历了这一切之后,它第一次似乎也起了作用。所以如果我再试一次,第一次就会成功。那么可能是缓存问题?以下是我的javascript:

            $('#submit_zipcode_frm').submit(function(event){
                    event.preventDefault();
                    var self = this;
                    $(".loader img").show();
                    z = $('#zipcode');
                    if(z.val() != '' && z.val().length == 5) {
                        var value = z.val().replace(/^\s\s*/, '').replace(/\s\s*$/, '');
                        var intRegex = /^\d+$/;
                        if(!intRegex.test(value)) {
                            $(".loader img").hide();
                            error($(".zipcode_field"));
                            return false;
                        }
                    } else {
                        $(".loader img").hide();
                        error($(".zipcode_field"));
                        return false;
                    }

                    $.ajax({
                        url: "/ajax/save/zipcode", 
                        type: 'GET',
                        async: false,
                        cache: false,
                        dataType: 'html',
                        data:   {zipcode: $('.zipcode_field').val()},
                        success: function(data) {
                                if(data == 'false'){
                                    $(".loader img").hide();
                                    error($(".zipcode_field"));
                                    return false;
                                }else{
                                    self.submit();
                                    getList();
                                }
                        }
                    });
            });
下面是标记:

                        <form id="submit_zipcode_frm" class="submit_zipcode" method="post" action="/go" target="_blank">
                        <div class="zipcode_container">
                            <span class="loader">
                                <img src="/assets/img/loader.gif" style="display: none;"/>
                            </span>
                            <input type="text" class="zip_input zipcode_field ghost" id="zipcode" name="zipcode"  value="Enter your Zip"/>
                            <div class="start_btn">
                                <button type="submit">Submit</button>
                            </div>
                            <div class="clear"></div>
                        </div>
                        <div class="clear"></div>
                        </form>

提交
如果您有任何建议或想法,我们将不胜感激。谢谢大家!

编辑:

这里仅澄清以下步骤:

  • 用户单击提交按钮
  • JavaScript显示加载程序并验证输入值的长度和类型
  • 如果通过,将使用ajax查找来真正验证它是否是有效的USPS邮政编码
  • 如果是,则提交表单并调用函数getList()
  • 如果不是,则抛出错误

  • self.submit()
    是否导致再次调用您的提交处理程序?@paugrime No,
    formNode.submit()
    将绕过任何jQuery绑定事件。但是,不久前返回false没有任何作用,这是问题的根源。
    self.submit()
    是否会导致再次调用提交处理程序?@paugrime No,
    formNode.submit()
    将绕过任何jQuery绑定事件。然而,之前不久返回false没有任何作用,这是问题的根源。