欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

原生Ajax的使用(创建XMLHttpRequest对象、发送请求、GET 还是 POST、异步还是同步、处理后台返回的数据)

程序员文章站 2022-07-12 15:48:05
...

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);