js的AJAX学习

风车骑士 2021-02-19 04:24:28
AJAX
AJAX = Asynchronous Javascript and XML (异步的javascript 和 XML)。

AJAX的工作原理


1.用户从UI界面发送请求,JavaScript中调用XMLHttpRequest对象。
2.HTTP请求由XMLHttpRequest对象发送到服务器。
3.服务器使用JSP,PHP, Servlet, ASP.net等与数据库交互。
4.检索数据。
5.服务器将XML数据或JSON数据发送到XMLHttpRequest回调函数。
6.XML和CSS数据显示在浏览器上。

创建实例(兼容IE5和IE6

let xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}


XMLHttpRequest对象的属性和方法



AJAX的实例

// 创建实例
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");
}

//监听AJAX实例的状态
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
console.log(xmlhttp.responseText);//获取文本数据
console.log(xmlhttp.getAllResponseHeaders();//获取响应头
console.log(xmlhttp.getResponseHeader('Last-Modified'));//获取指定的响应头

}
}

// open设置实例的状态,请求方式GET, url, 异步
xmlhttp.open("GET",url,true);

// 发送携带的数据
xmlhttp.send();


AJAX实例状态变化的过程
当发送一个请求后,readyState(存有 XMLHttpRequest 的状态信息)会随之变化,表示不同的阶段。每当readyState改变时,就会触发onreadystatechange事件。
注意:onreadystatechange事件被触发 5 次(0 - 4),对应着readyState的每个变化
0:请求未初始化,还没有调用 open()。
1:请求已经建立,但是还没有发送,还没有调用 send()。
2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。
3:请求在处理中;通常响应中已有部分数据可用了,没有全部完成。
4:响应已完成;您可以获取并使用服务器的响应了。

AJAX请求方式
常用的请求方式GET、POST

GET与POST
get更简单更快,但是发送数据大小有限制
post安全性高,可以发送大量数据
在以下情况中,需要使用post:
①无法使用缓存文件
②向服务器发送大量数据
③发送包含位置字符的用户输入时

GET
xmlhttp.open("GET","demo_get.html?t=" + Math.random(),true);
xmlhttp.send();
为了防止得到缓存结果,我们通常可以使用唯一id,一般使用时间戳
GETqing'qiu的参数可以拼接在链接上
特点
GET请求可被缓存
GET请求保留在浏览器历史记录中
GET请求可被收藏为书签
GET请求不应在处理敏感数据时使用
GET请求有长度限制
GET请求只应当用于取回数据

POST
xmlhttp.open("POST","ajax_test.html",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");
特点
POST请求不会被缓存
POST请求不会保留在浏览器历史记录中
POST请求不能被收藏为书签
POST请求对数据长度没有要求
...全文
148 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hookee 2021-02-21
  • 打赏
  • 举报
回复
走在四季 2021-02-20
  • 打赏
  • 举报
回复

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧