Xhr
Posted lijianming180
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xhr相关的知识,希望对你有一定的参考价值。
xhr Learning 续
2、Axios
- 定义:Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中
- 安装:
$ npm install axios
- 引入:
import axios from 'axios'
cdn:https://unpkg.com/axios/dist/axios.min.js
使用
1)get请求
1 | axios.get('/api/articles?type=more&category=home&shown_offset=1540351013034122&first_view=false') |
2)post请求
1 | axios.post('/api/v4/articles/45395824/voters',{ |
3)执行多个并发请求
1 | function (){ |
axios.all(iterable)
axios.spread(callback)
4)axios(url[, config])
1 | axios({ |
——请求方法的别名
axios.request(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
在使用别名方法时, url
、method
、data
这些属性都不必在配置中指定
若想指定其他参数,可以使用实例方法
如:axios#post(url[, data[, config]])
5)响应结构
1 | { |
6)配置的默认值/defaults
1 | axios.defaults.baseURL = 'https://api.example.com'; |
配置的优先顺序:库的默认值 < 实例的 defaults
属性 < 请求的 config
参数
7)错误处理
1 | axios.get('/user/12345') |
可以使用
validateStatus
配置选项定义一个自定义 HTTP 状态码的错误范围1
2
3
4
5axios.get('/user/12345', {
validateStatus: function (status) {
return status < 500; // 状态码在大于或等于500时才会 reject
}
})kidish的封装:
1
2
3.catch(e => {
e.response ? cb(e.response) : cb({status: 500,data:{result: 'errInter'}})
})
3、jQuery中的Ajax
jQuery.ajax( url [, settings ] )
中文文档 settings
参数及设置
1 | $.ajax({url: "api/articles?type=more&category=home&shown_offset=1540351013034122&first_view=false", |
[, success ]
为当请求成功时运行的函数1
2
3
4
5
6
7var data = {voting:1}
data = JSON.stringify(data)
$.post('/api/v4/articles/45395824/voters',{data},
function(data,status){
console.log("Data: " + data + "nStatus: " + status);
},"json"
);jQuery.get( url [, data ] [, success ] [, dataType ] )
1
2
3
4
5
6$.get('api/articles?type=more&category=home&shown_offset=1540351013034122&first_view=false',
function(data,status){
console.log(data)
console.log(status) //success
}
);
更多使用,总感觉用到了才知道。。。。。。
4、番外
Fetch
Fetch 是浏览器提供的原生 AJAX 接口。
XMLHttpRequest不符合关注分离原则,且基于事件的异步模型写起来也没有现代的 Promise,generator/yield,async/await 友好,因此Fetch出现正是来解决这一问题。
Fetch 优点主要有:
- 语法简洁,更加语义化
- 基于标准 Promise 实现,支持 async/await
- 同构方便,使用 isomorphic-fetch
缺点:浏览器支持率不高
使用:
安装:npm install whatwg-fetch --save
为了兼容老版本的浏览器,还需要安装npm install es6-promise --save
引入:1
2import 'whatwg-fetch'
import 'es6-promise'! Fetch 请求默认是不带 cookie 的,需要设置
fetch(url, {credentials: 'include'})
基本写法参考:参考学习文章
目前还未应用,暂时做一个了解,后续待深入学习~
以上是关于Xhr的主要内容,如果未能解决你的问题,请参考以下文章
带有 XHR 的 Chrome 推送通知(使用没有 PHP 的 JavaScript)
可以用 xhr.onload 替换 xhr.onreadystatechange 来进行 AJAX 调用吗?
Laravel Fortify 不响应 HTTP 代码而是响应实际路由,即使我将注册请求作为 XHR 发送