javascript - jquery表单验证器不支持ajax,我可以让jquery在没有ajax的情况下进行验证,反之亦然

标签 javascript php jquery mysql ajax

这是我的代码,不能与 jquery 验证器和 ajax 一起使用。这段代码确实有效,并且 serialize() 函数似乎可以工作,因为在浏览器中我看到了数据,但它没有达到我的成功,因为它只是刷新了页面并且数据没有进入 mysql。一直在阅读各种线程,但没有任何效果。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script>
    //validate contact form
    $(document).ready(function() {
        $("#form_contact").validate({
            rules: {
                firstname: {
                    required: true,
                    minlength: 2
                },
                lastname: {
                    required: true,
                    minlength: 2
                },
                email: {
                    required: true,
                    email: true
                },
                message: {
                    required: true,
                    minlength: 2
                }
            },
            messages: {
                firstname: {
                    required: "Please enter your first name"
                },
                lastname: {
                    required: "Please enter your last name"
                },
                email: {
                    required: "Please enter your email address."
                },
                message: {
                    required: "Please enter a message."
                }
            },
            submitHandler: function(form) {
                var d = $("#form_contact").serialize();
                $.ajax({
                    url: '/assets/php/index.php',
                    type: 'POST',
                    //dataType: 'text',
                    data: d,
                    success: function(data) {
                        //$('#form_contact').hide();
                        $("#thanks").text("Thank you for your message. I will get back to you shortly.");
                        $("#form_contact")[0].reset(); // To reset form fields on success.
                        return false;
                    }
                }):
            }
            return false;
        });
    });
</script>

最佳答案

使用event.preventDefault()作为,

submitHandler: function(ev, form) { //I dont know what this form object is doing here, add event object, ev.
                var d = $("#form_contact").serialize();
                $.ajax({
                    url: '/assets/php/index.php',
                    type: 'POST',
                    //dataType: 'text',
                    data: d,
                    success: function(data) {
                        //$('#form_contact').hide();
                        $("#thanks").text("Thank you for your message. I will get back to you shortly.");
                        $("#form_contact")[0].reset(); // To reset form fields on success.
                        //return false; <-- commented it out.
                    }
                })
              //: <-- commented this colon character
             ev.preventDefault(); //add it here to prevent the form from submitting
            }

请阅读评论以进一步说明,我认为您也不需要其他 return false 。我已经删除了一个,请检查答案代码。

关于javascript - jquery表单验证器不支持ajax,我可以让jquery在没有ajax的情况下进行验证,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31462045/

相关文章:

javascript - Jquery:可拖动的敏感性

javascript - 如何使contenteditable永久保存并全局保存?

javascript - 如何将 cookie 从一个域添加到域文件夹中的其他域

javascript - 如何使用 ID 选择器创建动态样式表?

php - 使用 CodeIgniter 将数组数据插入到两个表中

php - 如何最佳地保存 mysql 字段或 php 变量中的文本?

jquery - 我如何使用不同的颜色?

javascript - 替换 JQuery 以进行 contenteditable 元素事件绑定(bind)

jquery - 如何在页面加载时加载第二个动态下拉列表?

javascript - 在选择更改时渲染部分 rails