使用 Jquery 验证插件提交 Ajax 表单不起作用

Posted

技术标签:

【中文标题】使用 Jquery 验证插件提交 Ajax 表单不起作用【英文标题】:Ajax form submission with Jquery validation plugin is not working 【发布时间】:2015-06-27 09:04:55 【问题描述】:

我正在使用 Jquery 验证插件来验证表单,我需要在提交后显示成功/错误消息而不重新加载页面。 但是每次我提交表单时,页面都会重新加载。此外,即使数据出现在数据库中,“错误”警报也会不断出现。

index.php

<?php
function register()  
    $name = $_POST['name']; 
    $mail = $_POST['email']; 
    $query = "INSERT INTO table_name (name,email) VALUES ('$name','$email')"; 
    $data = mysql_query($query)or die(mysql_error()); 
    echo json_encode($data);

if(isset($_POST['submit'])) 
    register();

?>

javascript 代码:

$("#myform").validate(
   //rules, messages go here

   submitHandler: function(event) 
        $.ajax(
             url: "index.php",
             type: "POST",
             data: $(#myform).serialize(),
             dataType: 'json',
             success: function() 
                   alert("Thank you!");
             ,
             error: function() 
                   alert("Error. Try again please!");
             
        );

        event.preventDefault();
      

);

【问题讨论】:

如果页面重新加载,您的 JS 代码可能不会被触发。可能是JS错误,也可能是页面没有加载jquery等。 $(#myform).serialize() 缺少引号 => $('#myform').serialize() 在函数中返回false 【参考方案1】:

我认为你的问题在这里

 data: $(#myform).serialize()

改成

 data: $(this).serialize()

【讨论】:

以上是关于使用 Jquery 验证插件提交 Ajax 表单不起作用的主要内容,如果未能解决你的问题,请参考以下文章

JQuery.Validate 插件可以阻止提交 Ajax 表单吗

jquery+ajax验证不通过也提交表单问题处理

ajax和jQuery同时操作唯一效验和正则表达式

jQuery 表单验证和 Ajax 提交的问题

防止表单在 jQuery Validate 插件的 submitHandler 函数中提交

Jquery验证插件提交无效表单