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

时间:2011-09-21 01:22:28

标签: javascript jquery ajax

我正在使用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>

任何建议或想法都会非常感激。谢谢!

编辑:

只是为了澄清这里的步骤:

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

1 个答案:

答案 0 :(得分:0)

可以考虑使用submithandler查看它在jQuery表单插件中的处理方式并从中借用。 http://malsup.com/jquery/form/