You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
varxhr=newXMLHttpRequest();xhr.onreadystatechange=function(){if(xhr.readyState!==4)return;if(xhr.status===200){console.log(xhr.responseText)// do what}else{newError(xhr.statusText)}};xhr.open("GET",url,true);xhr.send();
实现AJAX请求的步骤:
创建 XMLHttpRequest 对象
设置状态监听函数
规定请求的类型、URL 以及是否异步处理请求
将请求发送到服务器
介绍AJAX
AJAX是异步的JavaScript和XML(Asynchronous JavaScript And XML)。简单点说,就是使用 XMLHttpRequest 对象与服务器通信。
本系列的主题是 JavaScript 深入系列,每期讲解一个技术要点。如果你还不了解各系列内容,文末点击查看全部文章,点我跳转到文末。
如果觉得本系列不错,欢迎 Star,你的支持是我创作分享的最大动力。
简洁全面的手写AJAX,以及用Promise封装AJAX请求
前言
原生js实现Ajax,本文用最简洁的脉路,帮你梳理前端经典面试“手写ajax”,然后再告诉你廖雪峰是如何使用Promise封装ajax!!!
手写AJAX
实现AJAX请求的步骤:
创建 XMLHttpRequest 对象
设置状态监听函数
规定请求的类型、URL 以及是否异步处理请求
将请求发送到服务器
介绍AJAX
AJAX是异步的JavaScript和XML(Asynchronous JavaScript And XML)。简单点说,就是使用
XMLHttpRequest
对象与服务器通信。AJAX最主要的两个特性:
步骤详解
创建 XMLHttpRequest 对象
创建 XMLHttpRequest 对象的语法
向服务器发送请求
将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:
open(method,url,async) 方法 规定
请求的类型
、URL
以及是否异步处理请求
。true
send(string) 方法 将请求发送到服务器。
如果需要像获取 HTML 表单那样 POST 数据,请使用
setRequestHeader()
来添加 HTTP 头。然后在send()
方法中规定您希望发送的数据:设置状态监听函数
当请求被发送到服务器时,我们需要执行一些基于响应的任务,处理服务器响应。
每当
readyState
改变时,就会触发onreadystatechange
事件。readyState
属性存有XMLHttpRequest
的状态信息。下面是
XMLHttpRequest
对象的三个重要的属性:◾ onreadystatechange - 存储函数(或函数名),每当
readyState
属性改变时,就会调用该函数。◾ readyState - 存有 XMLHttpRequest 的状态。请求状态 从 0 到 4 发生变化。
◾ status - HTTP响应码
每当 readyState 发生变化时就会调用 onreadystatechange 函数。
当 readyState 等于 4 且状态为 200 时,表示响应已就绪:
注意: onreadystatechange 事件被触发 4 次(0 - 4), 分别是: 0-1、1-2、2-3、3-4,对应着 readyState 的每个变化。
错误监控处理
XMLHttpRequest.statusText
属性返回一个字符串,表示服务器响应的状态提示。不同于status
属性,该属性包含整个状态信息,比如“OK”和“Not Found”。如果请求的状态readyState
的值为"0"或者"1",则这个属性的值将会是一个空字符;如果服务器没有返回状态提示,该属性的值默认为“OK”。该属性为只读属性。从服务器获取数据
当 readyState 等于 4 且状态为 200 时,表示响应已就绪,这个时候就可以用服务器返回的数据做任何你想做的了。
可以通过
xhr.responseText
去访问这些数据:使用Promise封装AJAX
使用上面封装好的ajax发起一个请求:
参考
查看原文
查看全部文章
博文系列目录
交流
各系列文章汇总:https://github.com/yuanyuanbyte/Blog
我是圆圆,一名深耕于前端开发的攻城狮。
The text was updated successfully, but these errors were encountered: