Ajax运行原理:通过ajax向页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到服务器端,在这段时间里,客户端可以任意进行任意操作,直到服务器端将数据返回给Ajax引擎后,会触发你设置的事件,从而执行自定义的js逻辑代码完成某种页面功能。即实现了数据的异步提交(局部刷新)。
Js原生ajax学习:以验证注册名为例:
js代码:
<script type="text/javascript">
$(function(){
$("#uname").blur(function () {
<%-- 1.创建Ajax引擎对象--%>
if(window.XMLHttpRequest) {
ajax=new XMLHttpRequest();
} else {
ajax=new ActiveXObject("Microsoft.XMLHTTP");
}
var name=$("#uname").val();
<%--3.绑定提交地址,true表示异步,false表示同步 --%>
ajax.open("get","checklogin?uname="+name,true);
<%--2.绑定监听 --%>
ajax.onreadystatechange=function () {
<%-- 判断数据是否成功返回--%>
if(ajax.readyState==4 && ajax.status==200) {
<%-- 5.接受响应数据--%>
$("#unameMsg").html(ajax.responseText);
}
}
<%-- 4.发送请求--%>
ajax.send();
})
})
</script>
<body> 账号:<input type="text" name="uname" id="uname"/>
<span id="unameMsg"></span>
</body>
checklogin控制器的业务逻辑如下:
response.setCharacterEncoding("utf-8");
String name=request.getParameter("uname");
PrintWriter out=response.getWriter();
String json=null;
if (name.equals("admin")){
out.write("<font color:'red'>非法输入</font>");
}else{
out.write("<font color:'green'>输入有效</font>");
}
out.close();
System.out.println("------------");
}
注意:如果是post提交
需要在发送请求之前设置一个头
xmlhttp.setRequestHeader(“Content-type”,”application/x-www-form-urlencoded”);