2015-08-27 09:56:48 9359次浏览 7条回答 1 悬赏 10 金钱

先说说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验证,这是验证就只有一次,现在问题出现了:如果表单验证不通过或者发生其他错误,我有应该怎样把错误信息输出到前台页面上呢?

大家有没有什么比较好的解决方案,还望不吝赐教,谢谢~

  • 回答于 2015-08-27 10:08 举报

    不明白两次提交是怎么算出来的。
    两次验证是常用方法。
    如果你要省,就把本地验证省了。服务器上的验证省不得。
    ajax也是有返回数据的,有错误返回后再显示就行了。

  • 回答于 2015-08-27 10:53 举报

    同意楼上,不太明白楼主什么意思。。。

  • 回答于 2015-08-28 08:50 举报

    不是客户端和服务端都有验证嘛!

  • 回答于 2015-08-28 10:14 举报

    太专业了,不太明白楼主想表达的什么意思

    觉得很赞
  • 回答于 2015-08-31 19:07 举报

    上面的js本身思路就有问题。

  • 回答于 2016-06-02 15:23 举报

    我看明白你的问题
    问:为什么会有你说的两次表单验证?
    答:因为ajax提交表单以后你又触发了form的submit()事件,所以会提交两次表单。
    另外提交表单以后,yii的cotroller处理数据,这个就看你自己怎么写了,然后直接return给ajax就可以了。
    还有,如果是需要获取验证结果,最好是设置ajax的async为false,也就是同步提交。
    然后你想把错误的信息显示出来,就在success:function(data){alert(data)}这里的data是指你成功提交表单以后后台返回的信息(你返回错误报告,自然就是具体的错误详情了)。

  • 回答于 2016-11-01 12:03 举报

    JS本身就有问题,你提交过去的数据是在后台验证的,验证后通过json返回到前台,在对错误进行处理。你on submit根本不需要

您需要登录后才可以回答。登录 | 立即注册
sjjliqpl
副董事长

sjjliqpl

注册时间:2015-02-09
最后登录:2020-04-09
在线时长:912小时5分
  • 粉丝34
  • 金钱18266
  • 威望80
  • 积分28186

热门问题