Spring MVC+ajax举办信息验证的要领

AJAX 不是新的编程语言,而是一种利用现有尺度的新要领。AJAX 最大的利益是在不从头加载整个页面的环境下,可以与处事器互换数据并更新部门网页内容。所以ajax对付晋升用户体验十分重要

XMLHttpRequest 是 AJAX 的基本。

主要的要领有两种:

var xmlhttp=new XMLHttpRequest(); xmlhttp.open(method,url,async) xmlhttp.send();

  open要领内里的参数中,method代表请求的范例(GET/POST), url 代表要要请求的资源的位置,async代表是否要启动异步请求,这个值一般都填true,因为这样更快,不会因为处事端的响应慢而导致措施挂起

  send要领虽然就是提倡请求的行动啦

  这里需要留意:假如需要像 HTML 表单那样 POST 数据,请利用 setRequestHeader() 来添加 HTTP 头。然后在 send() 要领中划定你但愿发送的数据:

xmlhttp.open("POST","url",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); //这一条很是重要,也很是有用 xmlhttp.send("fname=Henry&lname=Ford");

  上面代码中的第2行,指明白发送的数据范例,其实一般我们用来指定发送的范例常用值是JSON范例,也就是"application/json",为什么常用JSON范例呢?你想想,当我们要发送多个值的时候,假如一个一个参数的去组织,那将是何等贫苦呀,并且处事端拿到数据后,还要我们一个一个的将数据从request.parameter内里拿出来,很是的挥霍时间,所以,操作JSON,可以将数据先写成JSON名目,再传到后端,后端会自动理会,自动将数据填入对应的POJO,很是利便,

可是要做到这些,我们需要以下设置:

(1)配置content-type 为 "application/json" ,目标是汇报处事端传过来的是JSON

(2)用JSON.stringify将数据转换成JSON字符串再传送

(3)处事端Controller需要在要领的参数前用@requestBody,这样处事端就会挪用相应的理会器,将请求理会

  到这里我们一个完整的请求就完成啦!看完了请求,接下来我们再看响应,ajax接管响应的函数如下:

xmlhttp.onreadystatechange=function() //自动挪用 { if (xmlhttp.readyState==4 && xmlhttp.status==200) { xmlDoc=xmlhttp.responseXML; //得到值 } }

  Ajax在吸收到响应之后,会自动挪用 onreadystatechange要领,然后通过responseXML获取返回值,那么我们就会碰着一个问题:在Spring MVC中,返回值会写到ModelAndView中,然后查找到视图,将数据渲染到视图中,不能到达我们要的结果,即返回数据而不指定视图,所以我们要用到@responseBody

  声明@requestBody后,返回值假如是字符串则直接将字符串写到客户端,如果是一个工具,此时会将工具转化为JSON串然后写到客户端。这里需要留意的是,假如返回工具,按utf-8编码。假如返回String,默认按iso8859-1编码,页面大概呈现乱码。因此在注解中我们可以手动修改编码名目,譬喻@RequestMapping(value="/cat/query",produces="text/html;charset=utf-8"),前面是请求的路径,后头是编码名目。在客户端,得到JSON字符串今后,可以操作JSON.parse()将响应转换为json工具,利便利用

一个实例demo:

表单如下:

<form role="form" action="userController/insert.do"> <div> <label for="exampleInputEmail1">用户名</label><input type="text" onblur="check(this)"/> <h5 id = "usernameInfo"></h4> </div> <div> <label for="exampleInputPassword1">暗码</label><input type="password" onblur="check(this)"/> <h5></h4> </div> <div> <label for="exampleInputPassword1">确认暗码</label><input type="password" onblur="check(this)"/> <h5></label> </div> <button type="submit">提交</button> </form>

表单通纰谬去核心的onblur触发器触发查抄的 js 代码 check()

var check = function(info){ if (info.name=="username"){ var username = document.getElementById("exampleInputEmail1").value.trim(); if (username=="") { document.getElementById("usernameInfo").innerHTML = "用户名不能为空"; }else{ loadXMLDoc(); //执行Ajax查抄 } /////支解线////////////////////////////////支解线/////////////////////////////////////////支解线 }else if (info.name=="password"){ var pass=document.getElementById("exampleInputPassword1").value.trim(); if (pass==""){ document.getElementById("passInfo").innerHTML="暗码不能为空"; }else{ document.getElementById("passInfo").innerHTML=""; } }else{ var value1=document.getElementById("exampleInputPassword2").value; var value2=document.getElementById("exampleInputPassword1").value; if (value1!=value2){ document.getElementById("repassInfo").innerHTML="前后暗码纷歧致"; }else{ document.getElementById("repassInfo").innerHTML=""; } } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdfwg.html