AJAX(Asynchronous Javascript And XML)
如名字所示,ajax的含义是异步的JavaScript和XML,ajax不是新的编程语言,而是指与服务器交互数据从而对页面进行局部更新的web技术,xml是一种数据格式,相比于JSON,对数据的描述性更好
使用ajax
1.原生JavaScript
要使用ajax,XMLHttpRequest 对象必不可少,XMLHttpRequest 作为ajax的基础,支持所有的现代浏览器(IE5,IE6不算)
创建XMLHttpRequest 对象,兼容IE5,IE6
1 | var request; |
ajax请求数据
1 | // 点击ID为send的元素,发送ajax请求 |
2.jQuery
在jQuery中使用ajax会简单很多,既处理了浏览器兼容问题,而且也对JS代码进行封装,没有原生JS那么臃肿,jQuery中的ajax方法常用的有$.load
,
$.post,
$.get以及
$.ajax`
$.load(从服务器加载数据,并把返回的数据放入被选元素中)
1 | <p></p> |
1 | $("p").load(URL,data,callback); |
$.get(通过GET 请求从服务器上请求数据)
1 | $.get(URL,callback); |
$.post() (通过 POST 请求从服务器上请求数据)
1 | $.post(URL,data,callback); |
$.ajax(get,post请求皆可,比较通用)
1 | $.ajax({ |
参考:
11-07 更新
关于$.ajax参数:
complete
请求完成后回调函数,请求
success
和error
之后均调用,jQuery 1.5开始,complete
设置可以接受一个函数的数组。每个函数将被依次调用
contentType
默认值是”application/x-www-form-urlencoded; charset=UTF-8”,jQuery 1.6 开始,可以传递
false
,表明没有设置任何内容类型头信息
data (之前一直以为只有POST才会用data。。。)
发送到服务器的数据。它被转换成一个查询字符串,如果已经是一个字符串的话就不会转换。查询字符串将被追加到GET请求的URL后面
error
jQuery 1.5开始, 在
error
设置可以接受函数组成的数组。每个函数将被依次调用
method
HTTP 请求方法,jQuery 1.9.0 之前的版本,需要使用
type
选项
success
jQuery 1.5 成功设置可以接受一个函数数组。每个函数将被依次调用
done
一个可供选择的 success 回调选项的构造函数,从jQuery 3.0后success被其取代
fail
一种可供选择的 error 回调选项的构造函数,jQuery 3.0后
.fail()
方法取代了的过时的.error()
方法
always
一种可供选择的 complete 回调选项的构造函数,jQuery 3.0后
.always()
方法取代了的过时的.complete()
方法
then
包含了
.done()
和.fail()
方法的功能,可参考Promise规范(resolve,reject,then)
注意:jqXHR.success()
, jqXHR.error()
, 和 jqXHR.complete()
回调从 jQuery 1.8开始 被弃用过时。他们将最终被取消,您的代码应做好准备, 从jQuery 3.0开始被删除,你可以使用jqXHR.done()
, jqXHR.fail()
, 和 jqXHR.always()
代替。
jQuery执行之后回调在向promise规范靠拢,promise规范可以参考下列: