- // 除IE6所有浏览器都支持的
- const xhr = new XMLHttpRequest()
-
- // IE6
- const xhr = new ActiveXObject('Mricosoft.XMLHTTP')
-
- const xhr = new XMLHttpRequest()
-
- // xhr 对象中的 open 方法是来配置请求信息的
- // 第一个参数是本次请求的请求方式 get / post / put / ...
- // 第二个参数是本次请求的 url
- // 第三个参数是本次请求是否异步,默认 true 表示异步,false 表示同步
- // xhr.open('请求方式', '请求地址', 是否异步)
- xhr.open('get', './data.php')
-
- const xhr = new XMLHttpRequest()
- xhr.open('get', './data.php')
-
- // 使用 xhr 对象中的 send 方法来发送请求
- xhr.send()
-
- const xhr = new XMLHttpRequest()
- xhr.open('get', './data.php')
-
- xhr.send()
-
- xhr.onreadyStateChange = function () {
- // 每次 readyState 改变的时候都会触发该事件
- // 我们就在这里判断 readyState 的值是不是到 4
- // 并且 http 的状态码是不是 200 ~ 299
- if (xhr.readyState === 4 && /^2\d{2}$/.test(xhr.status)) {
- // 这里表示验证通过
- // 我们就可以获取服务端给我们响应的内容了
- }
- }
-
- const xhr = new XMLHttpRequest()
- xhr.open('get', './data.php')
-
- xhr.send()
-
- xhr.onreadyStateChange = function () {
- if (xhr.readyState === 4 && /^2\d{2|$/.test(xhr.status)) {
- // 我们在这里直接打印 xhr.responseText 来查看服务端给我们返回的内容
- console.log(xhr.responseText)
- }
- }
-
前后端交互,首先需要创建一个XMLHttpRequest对象,通过这个对象的open方法与服务器建立连接,通过send方法将请求发送给服务器,最后通过事件监听,将后端请求的数据通过回调函数返回给前端。
- const xhr = new XMLHttpRequest()
- // 直接在地址后面加一个 ?,然后以 key=value 的形式传递
- // 两个数据之间以 & 分割
- xhr.open('get', './data.php?a=100&b=200')
-
- xhr.send()
-
- const xhr = new XMLHttpRequest()
- xhr.open('get', './data.php')
-
- // 如果是用 ajax 对象发送 post 请求,必须要先设置一下请求头中的 content-type
- // 告诉一下服务端我给你的是一个什么样子的数据格式
- xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
-
- // 请求体直接再 send 的时候写在 () 里面就行
- // 不需要问号,直接就是 'key=value&key=value' 的形式
- xhr.send('a=100&b=200')
-
- // 使用的时候直接调用,传递一个对象就可以
- ajax({
- url: '', // 请求的地址
- type: '', // 请求方式
- async: '', // 是否异步
- data: '', // 携带的参数
- dataType: '', // 要不要执行 json.parse
- success: function () {} // 成功以后执行的函数
- })
-
ES6提出的异步编程解决方案.
承诺的意思,是一个专门用来解决异步 回调地狱 的问题
- // 检测机构
- //resolve : 处理异步时成功的状态
- //reject : 处理异步时失败的状态
- new Promise((resolve,reject) => {
- if(处理异步){
- resolve([参数]);
- }else{
- reject([参数]);
- }
- })
-
- new Promise((resolve,reject) => {
- if(处理异步){
- resolve([参数]);
- }else{
- reject([参数]);
- }
- })
- .then(() => {
- return new Promise(() => {
-
- })
- })
- .then(() => {
- return new Promise(() => {
-
- })
- })
- ……
- .then(() => {
-
- })
-
Promise.all() 将调用所有的promse对象,全部返回resolve时,该对象才返回resolve。如果有一个promise返回reject时,该对象返回reject
- async function fn() {
- const res = await promise对象
- }
-