Ajax(Asynchronous Javascript And Xml)
异步的js和xml
2004年发布,专门用来处理异步请求的技术,大大提高了用户处理页面的效率 可以说是web2.0以来最大的革命技术
同步是指用户发出请求,必须等待响应的返回,如果响应迟迟没有返回,则用户必须一直等待在哪里
当响应返回时整个页面被完全刷新
异步是指用户发出的请求不需要等待响应的返回,当响应返回时用户可能正在进行其他操作
响应返回页面部分刷新并不会导致整个页面的刷新
Ajax使用到的技术
JavaScript的核心语法
xml来封装数据
dom4j解析数据
json是2006年假加入ajax体系用来取代xml
dhtml是动态页面技术 包括很多前端技术css html xhtml等
一般的步骤
创建异步请求
function create(){}
发送异步请求
checkName(value){}
回调函数
function callback(){}
创建异步请求
request.new XMLHttpRequest();
此代码是level2版本 支持大部分浏览器,但是对ie6 7 8及之前的老旧浏览器兼容性差
如果出现无法创建的情况 使用level1版本
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
}else{
request = new ActiveXObject("Microsoft.XMLHttp");
}
发送异步请求
一般步骤
1、创建异步请求
调用之前的方法create()
2、发送异步请求
request.open(method, url, async, username, password);
在发送到的目的地进行业务逻辑的实现
method:发送请求的类型(get或post)
url:发送请求的目的地(如果类型为get则可以使用?传值)
async:默认为true表示使用异步请求,false是使用同步请求 如果响应未返回则浏览器锁死等待响应
username和password:如果web容器开启安全策略 则必须填写用户名和密码
3、设置使用字符流
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
post专属,get不需要书写
4、声明回调函数
request.onreadystatechange = callback;
这里表示在readyState参数发生改变时执行回调函数
5、设置要发送的值
request.send("key="+value);
注意有等号get不从此处传递值 不需要传递值填写null
但是不可以不书写
回调函数
首先判断返回的响应是完整的
if(request.readyState==4)
其次判断服务器没有出现异常
if(request.status==200)
以上都满足的话执行下面语句
接受返回的值
var value = request.responseText;
拿取lable
var dom_lb = document.getElementById("key");
拿取提交按钮
var dom_sub = document.getElementById("key");
进行一些列的操作
使用XML技术封装数据
doc.asXML() 将创建好的对象模型转换为xml
out.print(doc.asXML());
Json(JavaScrip Object Notation)
被称之为Java的常用的第十种数据类型,一般在服务器端创建封装数据,在页面解析数据
Json是一种特殊格式的字符串,可以直接打印
MINe信息是 text/plain
在2006年加入ajax技术体系之后代替了xml,专门用来封装数据
Json存在两种形式
1):{key:value,key:value,key:value***}
key必须是字符串
value:八种基本数据类型,字符串,自定义类型,数组,集合,null
2):[value,value,value***]
value:八种基本数据类型,字符串,自定义数据类型,数组,集合,null,Json
封装方式1:
可以封装任意数据类型,封装之后呈现格式1
JSONObject jo = new JSONObject();
jo.put("key1",value);
封装方式2:
专门用来封装自定义数据类型和Map
Mapmap = new HashMap();,string>,string>
map.put(1,"value");
对自定义数据类型进行有选择的封装
JsonConfig jc = new JsonConfig();
设置不封装的属性名
jc.setExcludes(newString[]{"属性名","属性名"});
封装方式3:
用来封装数组,List和Set
封装之后呈现格式2
Listlist = new ArrayList();
list.add("Java");
JSONArray ja = JSONArray.fromObject(strAr);
对Json封装的数据进行解析的话
需要导jar包
使用转换器将合法格式的json字符串转换成js对象(dom对象)
转换规则
json中的key全部转换为js对象的属性名
json中的value全部转换为js对象的属性值
举报/反馈