Ajax Jquery Post发送表单值(尽管存在验证错误)

Ajax Jquery Post发送表单值(尽管存在验证错误),ajax,jquery,jquery-plugins,Ajax,Jquery,Jquery Plugins,我正在尝试使用Jquery AJjax将表单值插入数据库,我有以下脚本将数据发送到我的控制器,它工作正常。我正在使用jquery验证插件来验证我的表单。现在的问题是,当我提交表单按钮时,即使存在一些验证错误(我的验证插件显示),表单值也会发送到数据库。但我希望只有在没有验证错误的情况下才会发送它们 提交表单后,值仍保留在表单中 你能告诉我哪里做错了吗 仅供您参考,我正在使用Codeigniter <script type="text/javascript"> $(documen

我正在尝试使用Jquery AJjax将表单值插入数据库,我有以下脚本将数据发送到我的控制器,它工作正常。我正在使用jquery验证插件来验证我的表单。现在的问题是,当我提交表单按钮时,即使存在一些验证错误(我的验证插件显示),表单值也会发送到数据库。但我希望只有在没有验证错误的情况下才会发送它们

提交表单后,值仍保留在表单中

你能告诉我哪里做错了吗

仅供您参考,我正在使用Codeigniter

<script  type="text/javascript">
  $(document).ready(function(){ // added
 $('#submit_item').click(function(){

    var teacherid = $('#teacherid').val();  
    var salary_amount = $('#salary_amount').val(); 



$.ajax({

   type: "POST",
   url: "<?php echo base_url(); ?>addteacher_salary/add_ajax",
   data: "teacherid="+teacherid+ "&salary_amount="+ salary_amount,
   success: function(html){
    $("#show").html(html);


       }
});

return false
});
}); // added
</script>

$(文档).ready(函数(){//已添加
$(“#提交项目”)。单击(函数(){
var teacherid=$('#teacherid').val();
var salary_amount=$(“#salary_amount”).val();
$.ajax({
类型:“POST”,
url:“添加教师工资/添加ajax”,
数据:“教师ID=“+teacherid+”&工资金额=“+salary\u amount,
成功:函数(html){
$(“#show”).html(html);
}
});
返回错误
});
}); // 补充

这里发生的事情并不是表单正在提交,而是您从表单中获取所有值,并在不提交表单的情况下发布它们,并且完全不验证您正在检索的值

您的验证插件可能有一个函数,您可以在继续提交AJAX帖子之前手动调用该函数来检查表单是否有效

如果您正在使用,您可能需要查看函数


。。。或但是有大量的验证程序插件,所以我不确定你指的是什么。不管怎样,您在这里要做的是在提交AJAX帖子之前手动触发验证。

我不确定我是否完全理解您希望它的行为,但另一种方法是使用
submitHandler
选项,如以下所述:

用于在表单有效时处理实际提交的回调。得到 形式作为唯一的参数。替换默认提交。右翼 在表单验证后,放置以通过Ajax提交表单

首先,我相信
$(form).ajaxSubmit()
正在使用jQuery表单插件。如果您没有或不想使用它,您可以将当前的ajax提交放在那里

旁注:
$.ajax
数据
参数可以是一个对象文本,因此您不必担心自己添加问号和符号。你可以这样做:

data: {
    teacherid: $('#teacherid').val(),
    salary_amount: $('#salary_amount').val()
}

如果您稍微清理一下缩进,这将更容易理解。您好,我使用的是jQuery验证插件1.7。我尝试使用if(!$('#myForm').valid()返回false;但还是没有运气(我尝试了您在侧注中提到的过程,但无法实现。我尝试了以下方式-键入:“POST”然后键入data:data,但没有传递任何数据。但是关于我上面提到的问题,我尝试了if(!$(“#我的表单”).valid()返回false;但这次除了重新加载页面外,什么也不会发生。是否有其他方法将我的值传递给我的控制器?我猜您没有在表单上调用validate方法。请通读验证插件的文档。是的,我没有在表单上调用validate方法。好的,我将阅读do文件。。
$(".selector").validate({
   submitHandler: function(form) {
     $(form).ajaxSubmit();
   }
})
data: {
    teacherid: $('#teacherid').val(),
    salary_amount: $('#salary_amount').val()
}