AJAX概述
- 概念:ASynchronous JavaScript And XML,异步的JavaScript和XML
- 异步和同步:
- 异步:客户端向服务器端发送请求后,无需等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他操作。
- 同步:客户端向服务器端发送请求后,必须等待服务器端的响应。在等待的期间,客户端不能做其他操作。
- 作用:
- Ajax是一种在无需加载整个网页的情况下,能够更新部分网页的技术。
- 通过在后台与服务器进行的少量数据交换,Ajax可以使网页实现异步更新,即可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用Ajax)如果需要更新内容,必须重载整个页面。
AJAX的实现方式
- 原生的JS实现方式
- JQuery实现方式
原生的JS实现方式
- 定义一个用于异步请求的方法:
<input type="button" value="发送异步请求" onclick="fun();">
- 创建发送异步请求的对象:
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
- 建立连接:
xmlhttp.open("GET","test1.txt",true)
,参数:
- 请求方式:GET,POST
- GET方式:请求参数在URL后面拼接,send方法为空参,如:
xmlhttp.open("GET","ajaxServlet?username=zhangjie",true)
- POST方式:请求参数在send方法中定义,如:
xmlhttp.send("username=zhangjie")
- 请求的URL:文件在服务器上的位置
- 同步或者异步请求:true(异步)或者false(同步)
- 发送请求:
xmlhttp.send(string)
:string参数仅用于POST请求。
- 接受并处理来在服务器的响应结果:
- 获取方式:
xmlhttp.responseText
或者xmlhttp.responseXML
- responseText属性:获得字符串形式的响应数据。
- responseXML属性:获得XML形式的响应数据。
- 获取时间:当XMLHttpTRequest对象的就绪状态(readyState属性)改变时,触发事件onreadystatechange
- onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
- readyState:存有XMLHttpRequest 的状态。从 0 到 4 发生变化。
- 0: 请求未初始化
- 1: 服务器连接已建立
- 2: 请求已接收
- 3: 请求处理中
- 4: 请求已完成,且响应已就绪
- status:XMLHttpState对象的状态
- 200: “OK”
- 404: 未找到页面
- 获取实现:
xmlhttp.onreadystatechange=function()
{
//判断readyState的状态是否为4,判断status响应状态码是否为200
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//获取服务器的响应结果
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
JQuery实现方式
$.ajax()
:
- 语法:
$.ajax({键值对});
- 示例:
$.ajax({
url:"ajaxServlet", //请求路径
type:"POST", //请求方式
data:("username":"jack","age":23),
success:function(data){
alert(data+"成功啦");
}, //响应成功后的回调函数
error:function() {
alert("出错啦");
}, //表示如果请求响应如果出现错误,会执行的回调函数
dataType:"text" //设置接受到的响应数据格式
})
$.get()
:发送get请求
- 语法:
$.get(url,[data], [callbacke],[type])
- url:请求路径,必须有;
- data:请求参数;
- callback:回调函数;
- type:响应结果类型。
$.post()
:发送post请求
- 语法:同get类似。
- 示例:
$.post("ajaxServlet",(username:"zhangjie"), function(data){
alert(data);
},"text");
serialize()
:通过序列化表单值,创建URL编码文本字符串。您可以选择一个或多个表单元素(比如input及/或文本框),或者 form 元素本身。序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中(即作为data参数)。