以下内容仅来自于日常实践零碎回顾、总结,不保证正确性,欢迎路过的大神指点指点!
1、这几天一直在写jsp前端页面,了解到前端与后端数据交互数据有两种。一种是form 的submit方式提交,这种方法可以在表单里通过声明属性:method = 'post'声明表单提交的方式(要与后台的controller的RequestMethod属性对应), action = ‘ url’声明表单提交后跳转的页面(好像采用这种方式一般都要跳转页面)。另一种方式就是通过ajax提交,ajax提交和响应的数据方式都是json格式,因为ajax是异步数据请求,不跳转页面,所以后台对应的controller中方法也注明注解@ResponseBody;其中bootstrap table的与后台的数据交互就是采用ajax的方式,只是bootstrap table 封装的比较好,对请求的url 、传参以及响应的参数利用都直接利用。
两种请求方式理解:
GET:传参拼在url地址后面,以?标志开始,&拼接;一般用于少量表单数据的的提交;
POST:传参拼在http消息体中,一般用于大量数据的提交;
2、因为对jquery validate基本没用过,今天直接操刀就要弄一个表单中输入起始日期不能大于截止日期的校验,大概浏览了一下runoob中的教程就在网上找了一些demo敲进去,遇到了各种问题,包括校验根本没反应,js文件不可用,校验提示信息不出来等,现在想想,都是心太急了,加上各种语法不熟悉惹的祸。jquery validate中有很多封装好的校验方法,可以直接在HTML或js中使用,但好像没有发现需求的现成方法。决定添加自定义校验方法,参照网上一个例子如下:
$.validator.addMethod("compareDate",function(value,element){
var assigntime = $("#assigntime").val();
var deadlinetime = $("#deadlinetime").val();
var reg = new RegExp('-','g');
assigntime = assigntime.replace(reg,'/');//正则替换
deadlinetime = deadlinetime.replace(reg,'/');
assigntime = new Date(parseInt(Date.parse(assigntime),10));
deadlinetime = new Date(parseInt(Date.parse(deadlinetime),10));
if(assigntime>deadlinetime){
return false;
}else{
return true;
}
},"<font color='#E47068'>结束日期必须大于开始日期</font>");
程序说明如下:
1.将标准时间转化为时间戳通过Date.parse()方法来处理。
2.将时间戳转化为整数,确保万一,通过parseInt("",10)来处理。
3.将时间戳转为日期对象new Date()。转为对象之后,就能够比较时间大小了
小白菜,按照剧情的尿性发展,故事往往没有这么顺利的,问题来了,根本不能用啊,坑爹呀。期间跑过一千万个的草泥马。。。。。
最后折腾的结果是:1)得加上jquery validate的引用文件;
2)日期所在控件加上<input class=”compareDate“>
3)为了让日期控件离开焦点后触发校验,js文件中得加上$("#form").validate();
再最后,有bug ,有bug, 有bug......校验中对日期的的取值比较竟然是取得日期控件点击前(或上一次)的值,我用的日期控件为bootstrap-datetimepicker,不知道是程序的问题,还是日期控件的问题,望有用过的大神能告知一二。。。。