Ajax
Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
同步和异步
传统的WEB应用中,在客户端发出请求与服务器做出响应之间的一段时间里,客户端是不可以做其他操作的,带来的问题就是用户体验差,而服务器响应的结果通常是返回一个页面或者重定向到其他页面。这就是同步。
异步请求是,用户可以在不刷新页面的前提下更新页面部分数据(局部更新),在客户端向服务器发生请求后,在等待服务器的响应的这段时间中,用户可以继续进行他的操作,使用这种异步请求可以及时的更新页面的数据,用户体验较好。
XMLHttpRequest对象
XMLHttpRequest 对象用于在后台与服务器交换数据。通过这个对象可以实现异步操作。
获取XMLHttpRequest对象
var request = new XMLHttpRequest();这种方式不兼容IE5和IE6
XMLHttpRequest发送请求
open(method,url,async)//创建请求method-请求方式(字符串类型),url-请求路径(字符串类型),async-同步/异步(boolean类型,true异步,false同步,默认true)
send(string)//发送请求string-要发送的数据,字符串类型,get请求可以不填写改参数,因为参数都放在url中,可以传递null值,post请求必须填写
request.setContentHeader("Content-Type","application/x-www-form-urlencoded");设置http的Content-Type头信息,这是告诉游览器我发送的是一个表单,这个方法应该写在open和send之间,否则会抛出异常
XMLHttpRequest获取响应
request.responseText获取字符串形式的响应数据
request.responseXML 获取XML形式的响应数据
request.status获取数字状态信息
request.statusText获取文本形式的状态信息
request.getAllResponseHeader()获取所有的响应消息头
request.getResponseHeader(xx)获取指定的消息头的值
request.readState代表服务器响应的变化
0-请求未初始化,未调用open
1-服务器已经建立,open已经调用了
2-请求已接收,接收到头信息了
3-请求处理中,接收到响应主体了
4-请求已完成,且响应已就绪,也就是响应完成了
Json格式
服务器可以向客户端返回一串特定格式的字符串,客户端收到之后进行解析,可以得到自己想要的数据
格式:
{"属性名":"值","属性名":"值","属性名":"值"}值的类型可以数字、字符串、数组、对象、null
javaScript提供了解析json格式字符串的方法,转化成json对象,
提供的方法有:eval和JSON.parse()
eval解析json会把json中的代码执行,而且相对麻烦不建议使用这种方式解析
var jsondata = '{"staff":[{"name":"洪七","age":"70"},{"name":"郭靖","age":"35"},{"name":"黄蓉","age":"30"}]}';
var jsonobj = eval('('+jsondata+')');JSON.parse()不会执行json中的代码
var jsondata = '{"staff":[{"name":"洪七","age":"70"},{"name":"郭靖","age":"35"},{"name":"黄蓉","age":"30"}]}';
var jsonobj = JSON.parse(jsondata);jQuery中的Ajax
$.ajax({
"url":"/login",
"data":"username=tom&password=1234",
"type":"post",
"dataType":"json",
"success":function(json){
},
"error":function(xhr){
}
});函数的参数是一个json对象
- url:请求路径
- data:请求数据
- type:请求方式
- dataType:服务器返回的数据类型,一般采用json,可以设置为json
- success:是一个方法,请求成功后的回调函数,传入返回后的数据,
- error:是一个方法,请求失败后的回调函数,传入XMLHttpRequest对象