如何验证ajax表单?

Posted

技术标签:

【中文标题】如何验证ajax表单?【英文标题】:How to validate ajax form? 【发布时间】:2013-08-04 21:01:34 【问题描述】:

我正在使用jQuery FormBuilder Plugin 在我的应用中生成表单构建器。

问题是我还有另外两个输入字段需要与此一起提交。

我的表单结构如下:

<script>
    $(function() 
        $('#my-form-builder').formbuilder(
            'save_url' : 'examplesave',
            'load_url' : 'examplejson',
            'useJson' : true
        );
    );
</script>

<form id="myForm">
    <input type="text" id="fname" />
    <input type="text" id="lname" />
    <div id="my-form-builder"></div>
</form>

我已编辑 jquery.formbuilder.js 文件以附加其他两个输入字段:

// saves the serialized data to the server
            var save = function () 
                    var fname= $('#fname').val();
                    var lname= $('#lname').val();

                    if (opts.save_url) 
                        $.ajax(
                            type: "POST",
                            url: opts.save_url,
                            data: $(ul_obj).serializeFormList(
                                prepend: opts.serialize_prefix
                            ) + "&form_id=" + form_db_id + "&fname=" +fname + "&lname=" +lname,
                            success: function () 
                        );
                    
                ;

到目前为止,一切都很好。这工作得很好。 问题是我想在提交之前使用jquery Validate plugin 来验证输入字段。 现在我可以在(document).ready 上使用jQuery Form plugin 来验证字段。比如:

$('#myForm').ajaxForm(
                
                    type: "POST",
                    url: "examplesave",
                    data: ?????????????????????????????????
                    beforeSubmit : function() 
                        $("#myForm").validate(
                            rules : 
                                fname : 
                                    required : true
                                ,
                                lname : 
                                    required : true
                                
                            ,
                            messages : 
                                fname : "Please enter...",
                                lname : "Please enter..."
                            
                        );
                        return $("#myForm").valid();
                    ,
                    success : function() 
                );

但是我如何获取数据

data: $(ul_obj).serializeFormList(
                                    prepend: opts.serialize_prefix
                                ) + "&form_id=" + form_db_id + "&fname=" +fname + "&lname=" +lname

部分?它只是按原样提交表单,而 jQuery formbuilder 不会将输入序列化在一起。我如何在这里使用序列化插件? 我真的很糟糕。我不是很擅长 javascript

有人可以指导我吗?如果不清楚,我可以添加更多细节。我绞尽脑汁。还有另一种方法吗?请提出建议。

【问题讨论】:

【参考方案1】:

尝试使用 serialize() 函数

  ...
  data:$("#myForm").serialize();

这会从元素中序列化所有你

【讨论】:

好吧,我猜你误会了。我想要一种获取数据的方法: $(ul_obj).serializeFormList( prepend: opts.serialize_prefix ) + "&form_id=" + form_db_id + "&fname=" +fname + "&lname=" +lname,在数据部分。有一个插件函数可以以自己的方式对其进行序列化。如何获得那部分?

以上是关于如何验证ajax表单?的主要内容,如果未能解决你的问题,请参考以下文章

如何验证表单数据,然后通过 AJAX 发送,然后在同一页面上显示提交的结果

AJAX 表单验证并提交

laravel 5中的ajax表单验证

Ajax提交表单时验证码自动验证 php后端验证码检测

通过 AJAX 验证 Laravel 表单中的文件输入

使用 mysqli_query 进行 ajax 表单验证