原生Ajax的使用(创建XMLHttpRequest对象、发送请求、GET 还是 POST、异步还是同步、处理后台返回的数据)
1 学习目标
(1)Ajax在开发中的应用(为什么要去使用它)
为了能够做局部刷新(只更新网页中的部分内容),以此来提高效率
(2)原生的Ajax的使用方式
(3)jQuery中的Ajax的使用方式
(4)修改之前的案例,将请求转换为Ajax的方式
2 Ajax入门
2.1流程
(1)发送请求:请求方式(get、post)、指定请求地址 、参数设置
(2)响应结果:响应状态(接受状态、结果状态)返回数据
(3)处理结果:根据具体的业务需求
2.2创建XMLHttpRequest对象
XMLHttpRequest 是 AJAX 的基础。
为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject :
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");
}
2.3发送请求
如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();
方法 | 描述 |
---|---|
open(method,url,async) | 规定请求的类型、URL 以及是否异步处理请求。method:请求的类型;GET 或 POST。url:文件在服务器上的位置。async:true(异步)或 false(同步) |
send(string) | 将请求发送到服务器。string:仅用于 POST 请求 |
GET 还是 POST?
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
get请求携带参数:
//参数直接拼接到url中
xmlhttp.open("GET","demo_get2.asp?fname=Bill&lname=Gates",true);
xmlhttp.send();
post请求携带参数
如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:
xmlhttp.open("POST","ajax_test.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Bill&lname=Gates");
方法 | 描述 |
---|---|
setRequestHeader(header,value) | 向请求添加 HTTP 头。 header: 规定头的名称, value: 规定头的值。 |
异步还是同步
同步:JavaScript 会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会挂起或停止。
异步:在等待服务器响应时执行其他脚本,当响应就绪后对响应进行处理。
3 处理后台返回的数据
如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。
属性 | 描述 |
---|---|
responseText | 获得字符串形式的响应数据。 |
responseXML | 获得 XML 形式的响应数据。 |
如果来自服务器的响应并非 XML,请使用 responseText 属性。
responseText 属性返回字符串形式的响应
var data = xmlhttp.responseText;
//将返回的数组字符串转换为数组对象
var dataArr = JSON.parse(data);
上一篇: 力软敏捷开发框架更新,加入葡萄城报表功能