前言
当页面html/jsp请求servlet想要获取一点点数据时常常会获取整个页面,这种请求是一种同步请求方式
而AJAX则可以实现只更新那一小部分页面,无需请求整个页面,不会导致请求时出现页面空白间隙时间过长(加载缓慢),大大的提高了用户使用感
AJAX原始版
js内异步请求发送方式
//1.创建XMLHttpRequest对象
function yibu(){
var xmlhr;
if(window.XMLHttpRequest){
//IE7以上 创建对象
xmlhr=new XMLHttpRequest();
}else{
//IE7以下创建对象
xmlhr=new ActiveXObject("Microsoft.XMLHTTP");
}
var stu_name=document.getElementById("aa").value;
//2.open方法 确定参数 1/请求方式 2/路径与数据 3/是否异步
xmlhr.open("get", "show.do?stu_name="+stu_name, true);
//3.send方法 发送
xmlhr.send(null);
};
servlet内异步请求响应方式
//异步请求响应方式
response.getWriter().write(str);
js内接受servlet响应的数据
xmlhr.onreadystatechange=function(){
//readyState 状态属性 status 响应码
if(xmlhr.readyState==4&& xmlhr.status==200){
//得到servlet响应的数据
var str=xmlhr.responseText;
if(str=="true"){
document.getElementById("a").innerHTML="改用户名可用";
document.getElementById("b").innerHTML="";
}else{
document.getElementById("a").innerHTML="";
document.getElementById("b").innerHTML="改用户名不可用";
}
}
};
jQuery版异步请求ajax版
jQuery版先导包
var stu_name=$("#aa").val();
$.ajax({
type:"get",
url:"show.do?stu_name="+stu_name,
//预期服务器返回的数据类型
dataType:"text",
//msg为从servlet内响应获取的数据
success:function(msg){
if(msg=="true"){
$("#a").text("账户可用");
$("#b").text("");
}else{
$("#a").text("");
$("#b").text("账户不可用");
}
}
});
get请求版
var data={"stu_name":$("#aa").val()};
get("show.do",data,function(msg){
if(msg=="true"){
$("#a").text("1账户可用");
$("#b").text("");
}else{
$("#a").text("");
$("#b").text("账户不可用");
}
});
post请求版
var data={"stu_name":$("#aa").val()};
$.post("show.do",data,function(msg){
if(msg=="true"){
$("#a").text("账户可用");
$("#b").text("");
}else{
$("#a").text("");
$("#b").text("账户不可用");
}
});
json数据格式
json格式对象 {变量名:值,变量名:值};
json数组
var a=[
{"stu_id":"1001","stu_name":"{'stu_id':'1003','stu_name':'王五'}","stu_sex":"男"},
{"stu_id":"1002","stu_name":"李四","stu_sex":"女"}
];
字符串转为json对象
//字符串转为json对象
var b=eval("("+a[0].stu_name+")")
servlet内打包json数组,先导json包
List<StuInfo> list=new StuInfoDAO().findAll();
//打包为json数组
String str=JSONArray.fromObject(list).toString();
//打包成json对象
String str=JSONObject.fromObject(stu).toString();
//在java内如何从一个json对象中取数据
JSONObject o=JSONObject.fromObject(str);
String stu_id=o.getString("stu_id");