由jQuery Validation Remote验证引起的错误(MVC3 jQuery.validate.unobtrusive)
发布日期:2021-06-24 18:30:31 浏览次数:2 分类:技术文章

本文共 1792 字,大约阅读时间需要 5 分钟。

出问题的场景:我用MVC3写了一个表单,不管怎么点击都没有反应。因为不是第一次写带validate的表单,所以我确认所有验证都是通过的。

下面是在mvc4默认模版项目中重现错误的示例表单:

实际项目中会相对复杂一点,表单也是ajax版本的。

现在不管怎么点击Register都不会有错误,也没有反应,同学可以自己下载测试包测试。

状态200,一点错误都没有。

这个问题困扰了我两天,没有错误信息的问题最头疼,怎么操作console里都没有任何输出。

往往最后解决问题的方案不是最宝贵的,解决的思路和过程才是,而且也学到了更多的东西,如果看解决方案请移步文章末尾;

这里说下我的经验:

1、对于常用的组件要熟悉熟练熟透,不熟悉开发速度上不来,不熟练没办法调试,不熟透会花更多时间解决问题,我停留在熟悉太久了,所以要抓住每次碰到问题的机会有针对的深入学习一下;

2、时刻保持良好的调试环境,熟悉各种调试工具,很难想象没有这些调试工具的生活;

3、熟悉Http请求,像常用的Post、Get,以及各种数据类型像常用的json、text/html等;

4、脚本语言没有秘密,所以虽然不能像编译型语言那样调试的便利,但是通过脚本的源代码什么问题都能解决;

源代码是王道

碰到这个问题第一步就是打开firebug,这里赞下ch的开发者工具,确实给力,后面的调试基本都在ch里执行的。

因为js基础不扎实,对于jquery管理下的事件还是很头大的,特别是单步后的代码跑来跑去的一点概念没有。

步骤一:先从自己的代码出手,对比两个cshtml页面代码,样本页面是没有问题的,不是不自信,一般稳定的库出错的可能性太小,大家都懂得;

结果:从第一张图应该能看的出来,没有问题,用的合情合理,因为所有引用和使用的技术都在样本页面已经使用过了,这里我注释了很多不同的东西,当然问题还是存在;

步骤二:因为对事件不熟悉,原来的理解也是皮毛,虽然跟c#也是差不多的我还是复习了一遍,《Javascript权威指南》很棒,很全也很深入,感谢淘宝前段团队;

结果:一天时间有一半用在这个上面了,当然途中有复习有搜索等,虽然没解决问题但是这块空白算是补上了,通过调试又看了不少jQuery代码,还是很看不懂啊,jQuery代码质量还是很高的很精简,很全面,内存泄露也有检查。这里要分享的是解决问题要迂回,就算最后没解决但是不会两手空空,侧面的学习更能帮助解决问题,还有就是换个问题或者工作放松下,最后回头解决可能就更清晰了;

步骤三:第二天,前一天没解决的问题,总是会留在脑子里挥之不去,趁无聊的时候从策略层面分析了总结了几种可能,以便于上班后缩小问题范围,验证的错误不是第一次碰到,虽然验证都通过了,但是觉得问题还是出在这个上面的可能性更大,整个上午都在jquery.validate.js和 jquery.validate.unobtrusive.js 这两个文件里度过。

结果:基本了解了validate的结构;

步骤四:定位到关键的地方;

结果:

handle()就是执行form.submit()的地方,但是它都上还有个判断,这个判断的作用是防止重复提交,去掉它试试看?嗯,可以提交了,但是问题还没有解决;

 

步骤五:validator.pendingRequest都在哪些地方有操作?为什么没有回到0,0就可以正常handle()了;

结果:validator对象的init,startRequest,stopRequest。太明显了,开始++,结束--,没变0肯定是没--,进一步调试也找到了断裂的地方,jquery.validate.js文件Remote方法ajax结束后调用stopRequest;

原因:jquery.ajax.success除了需要状态过关如304和200这样的外还需要返回的类型符合dataType定义,也就是请求头,否则不会执行success。改正返回类型后一切正常了,搞不明白,stopRequest这么重要的东西怎么能放在success里呢,放done里才对嘛,真搞不懂。

本文转自today4king博客园博客,原文链接:http://www.cnblogs.com/jinzhao/archive/2012/09/20/2695384.html,如需转载请自行联系原作者

转载地址:https://blog.csdn.net/weixin_34248258/article/details/90092313 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:排名 sql
下一篇:Transact-SQL编程规范

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月03日 03时32分36秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Scratch画雪花 电子学会图形化编程Scratch等级考试四级真题 2020-12 2019-04-28
初学python100例-案例29 判断回文数 少儿编程案例讲解 2019-04-28
【蓝桥杯真题10】Scratch投球 少儿编程scratch蓝桥杯选拔赛真题讲解 2019-04-28
Scratch绘图优化程序 电子学会图形化编程Scratch等级考试四级真题和答案 2020-12 2019-04-28
Scratch河马带球小游戏 蓝桥杯Scratch国赛真题答案和解析 2021-07-01
Scratch画圆 蓝桥杯Scratch国赛真题答案和解析 2021-07-01
Scratch画圆形螺旋 蓝桥杯Scratch国赛真题答案和解析 2021-07-01
初学python100例-案例30 计算闰年 少儿编程案例讲解 2021-07-01
Scratch螺旋多边形小游戏 蓝桥杯Scratch国赛真题答案和解析 2021-07-01
初学python100例-案例31 输入星期几的第一个字母判断是星期几 少儿编程案例讲解 2021-07-01
初学python100例-案例32 男孩女孩小孩人数 少儿编程案例讲解 2021-07-01
【蓝桥杯真题12】Scratch角色装扮 少儿编程scratch蓝桥杯选拔赛真题讲解 2021-07-01
毕业设计 C#开发实现影院信息管理商城系统 毕业论文【论文+源程序+数据库】 2021-07-01
电子学会图形化scratch编程等级考试二级真题答案解析(判断)2020-9 2021-07-01
scratch打棒球游戏 电子学会图形化编程scratch等级考试四级真题和答案解析2019 2021-07-01
java SPI 与cooma(dubbo 微容器改良品)--1 2021-07-01
安全合规--46--基于国内法律法规的企业数据合规体系建设经验总结(五) 2021-07-01
安全合规--49--基于国内法律法规的企业数据合规体系建设经验总结(八) 2021-07-01
Python3开发--25--Django项目的数据模型搭建与使用 2019-04-28
Python3开发--26--Django项目的业务数据处理 2019-04-28