AJAX= Asynchronous JavaScript And XML,即异步JavaScript和xml技术,是一种无需重新加载整个网页的情况下,能够更新部分网页的技术。下图就是ajax的工作流程。
XMLHTTP是一组API函数集,可被JavaScript调用,通过HTTP在浏览器和web服务器之间收发XML或其它数据。XMLHTTP最大的好处在于可以动态地更新网页,它无需重新从服务器读取整个网页,也不需要安装额外的插件。该技术被许多网站使用,以实现快速响应的动态网页应用。
XMLHTTPRequest非常重要,是Ajax的基础,它是用来与服务器交换数据的对象。
首先,我们来创建一个XMLHTTPRequest对象。
variable=new XMLHttpRequest();
然后,我们向服务器发送请求。
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
open方法是用来规定请求的类型,URL,以及是否异步处理请求的。
请求的类型有两种,GET/POST,一般情况下,均使用get。
但是如果碰到下列三种情况,则建议使用post。
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
XMLHttpRequest 对象如果要用于 AJAX 的话,其 open() 方法的 async 参数必须设置为 true。
send方法向服务器交换数据。
发送请求后,就应该等待服务器的响应了。
那么如何获取服务器的响应呢?
使用XHR对象的responseText和responseXML的属性。
XHR的三个重要属性:
readyState是XMLHTTPRequest的一个重要属性,它存有XHR的状态信息,从0到4发生变化。0表示请求未初始化,1表示服务器连接已建立,2表示请求已接收,3: 请求处理中,4表示请求已完成,且响应已就绪。
每当 readyState 改变时,就会触发 onreadystatechange 事件。
status属性用于返回当前请求的HTTP状态码,值为数值类型。200为OK,404为未找到。
下图表示了如何处理服务器返回的信息
Jquery是一个js库,它的核心概念是write less,do more。因此在jquery库里,封装了ajax使用的相关方法。
jQuery.ajax(...)
部分参数:
url:请求地址
method:请求方式,GET/POST
headers:请求头
data:要发送的数据
contentType:即将发送信息至服务器的内容编码类型(默认: "application/x-www-form-urlencoded; charset=UTF-8")
async:是否异步
timeout:设置请求超时时间(毫秒)
beforeSend:发送请求前执行的函数(全局)
complete:完成之后执行的回调函数(全局)
success:成功之后执行的回调函数(全局)
error:失败之后执行的回调函数(全局)
accepts:通过请求头发送给服务器,告诉服务器当前客户端课接受的数据类型
dataType:将服务器端返回的数据转换成指定类型
"xml": 将服务器端返回的内容转换成xml格式
"text": 将服务器端返回的内容转换成普通文本格式
"html": 将服务器端返回的内容转换成普通文本格式,在插入DOM时,如果包含js标签,会尝试去执行
"script": 尝试将返回值当作JavaScript去执行,然后再将服务器端返回的内容转换成普通文本格式
"json": 将服务器端返回的内容转换成相应的JavaScript对象
"jsonp": JSONP 格式
一个简单用例:
跨域,举例来说,就是利用Ajax读取用户在B网站中的余额,通过Ajax向A网站发送修改密码的请求,。因为跨域请求会导致网页失去安全性,所以浏览器阻止跨域请求。
1.JSONP实现跨域请求
JSONP遵循浏览器的同源策略基础上实现跨域请求的一种方式,利用