ajax:异步的js和xml
onreadystatechange:当XMLHttpRequest的状态改变的时候触发的一个函数
status:获得响应的状态码
responseText:获得响应的文本数据
responseXml:获得响应的xml数据
功能的实现主要依赖于js中的XMLHttpRequest对象,他可以像服务器异步的发送请求
后台简单模拟:
String name = req.getParameter("name") ;
System.out.println(name);
resp.setContentType("text/html;charset=utf-8");
//模拟数据
if("admin".equals(name)){
resp.getWriter().print("账号已经存在");
}else{
resp.getWriter().print("恭喜你");
}
jsp页面的get方式
<input type="text" name="user" onblur="ajax_post()" id="name">
<div id="info" ></div>
<script type="text/javascript">
function ajax_get(){
var uname = document.getElementById("name").value ;
//1,创建异步的对象,这里省略了判断浏览器,像ie的这个对象是在activexobject中
var ajax = new XMLHttpRequest() ;
//2,设置状态改变的监听,相当于回调函数
ajax.onreadystatechange = function(){
if(ajax.readyState == 4){ //请求发送成功
if(ajax.status == 200 ){ //响应也成功
//获取响应数据
var data = ajax.responseText ;
//alert(data) ;
document.getElementById("info").innerHTML = data ;
}
}
}
//3,设置请求的路径参数1:请求的方式 参数2:请求的地址,参数3:是否异步
ajax.open("get","ajax?name="+uname,true) ;
//4,发送请求,因为这是get请求方式,所以请求参数是null
ajax.send(null) ;
}
post请求方式
function ajax_post(){
var uname = document.getElementById("name").value ;
//1,创建异步的对象,这里省略了判断浏览器,像ie的这个对象是在activexobject中
var ajax = new XMLHttpRequest() ;
//post请求要加上请求头
//2,设置状态改变的监听,相当于回调函数
ajax.onreadystatechange = function(){
if(ajax.readyState == 4){ //请求发送成功
if(ajax.status == 200 ){ //响应也成功
//获取响应数据
var data = ajax.responseText ;
//alert(data) ;
document.getElementById("info").innerHTML = data ;
}
}
}
//3,设置请求的路径参数1:请求的方式 参数2:请求的地址,参数3:是否异步
ajax.open("post","ajax",true) ;
ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//4,发送请求,因为这是post请求方式,参数不能跟在地址后
ajax.send("name="+uname) ;
}
post请求的注意点:ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
要有请求的头信息,位置要放在open后面,不然可能会报错