yii2表单采用ajax提交时,怎样验证表单呢? [ 2.0 版本 ]
先说说ajax提交:
$(function () {
jQuery('form#apitool').on('beforeSubmit', function (e) {
var $form = $(this);
$.ajax({
url: $form.attr('action'),
type: 'post',
data: $form.serialize(),
success: function (data) {
// do something
}
});
}).on('submit', function (e) {
e.preventDefault();
});
据我所知:
1.如果不采用表单ajax提交表单,那么页面会直接post,错误信息会直接显示到页面上。当然,这不是我想要的
2.如果采用ajax提交表单,并同时采用ajax验证表单,那么在提交之前js会自动验证表单,并显示错误信息在页面上,当然功能固然很好,但是就会提交两次。一次为验证,一次为真正的提交,而且提交的那次一样会去验证表单,这样就导致了重复验证,因此,这并不是我想要的。
3.采用ajax提交表单,不采用ajax验证,这是验证就只有一次,现在问题出现了:如果表单验证不通过或者发生其他错误,我有应该怎样把错误信息输出到前台页面上呢?
大家有没有什么比较好的解决方案,还望不吝赐教,谢谢~
共 7 个回答
-
xjx7514329 回答于 2015-08-27 10:53 举报
同意楼上,不太明白楼主什么意思。。。
-
我看明白你的问题
问:为什么会有你说的两次表单验证?
答:因为ajax提交表单以后你又触发了form的submit()事件,所以会提交两次表单。
另外提交表单以后,yii的cotroller处理数据,这个就看你自己怎么写了,然后直接return给ajax就可以了。
还有,如果是需要获取验证结果,最好是设置ajax的async为false,也就是同步提交。
然后你想把错误的信息显示出来,就在success:function(data){alert(data)}这里的data是指你成功提交表单以后后台返回的信息(你返回错误报告,自然就是具体的错误详情了)。 -
wq67200976 回答于 2016-11-01 12:03 举报
JS本身就有问题,你提交过去的数据是在后台验证的,验证后通过json返回到前台,在对错误进行处理。你on submit根本不需要
sjjliqpl
注册时间:2015-02-09
最后登录:2020-04-09
在线时长:912小时5分
最后登录:2020-04-09
在线时长:912小时5分
- 粉丝34
- 金钱18266
- 威望80
- 积分28186