Vue —— axios + fetch-jsonp

た 入场券 2023-06-13 09:45 49阅读 0赞
一个bug解决:

有时在Vue工程中写es6语法代码会报regeneratorRuntime is not defined的错误,此时可通过下面方式解决:

  1. 下载npm install --save-dev babel-polyfill
  2. webpack.config.js中写var babelpolyfill = require("babel-polyfill")
  3. 在使用es6语法组件中/main.js引入babel-polyfill : import "babel-polyfill"

axios

  1. axios支持cross跨域请求,不支持jsonp
  2. 返回的为一个promise对象,需要通过then方法获取传回来的值
1. 使用axios步骤
  1. 下载axios :cnpm install axios --save-dev
  2. 在使用axios处引入axios:import axios from "axios"
  3. 使用

  4. 下载axios :cnpm install axios --save-dev

  5. axios加到Vue原型链上:在main.js引入axios(import axios from "axios"),在实例化Vue之前Vue.prototype.axios(axios)
  6. 在其他地方直接使用:Vue.axios/axios
2. axios两个get请求传值方式:

① 在url路径后面传值:?name=value&name2=value2
params:{key:value;key2:value2}

3. axios写法:

axios.get("url",{配置信息})
axios.post("url",data,{配置信息})
axios({method:"请求方式",url:"",data:{}...})

第三种方式配置信息详解:

  1. method:请求方式。可取值:post/get
  2. url:请求地址
  3. timeout:等待时延。如果超过时间,则直接返回异常,即执行catch中的语句
  4. auth:{username:"",password:""}:设置用户名和密码
  5. responseType:可接受的数据类型。eg:json
  6. responseEncoding:可接受的字节编码。eg:utf-8
  1. //1
  2. axios .get(
  3. "http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1"
  4. )
  5. .then(res => {
  6. console.log(res);//打印返回信息
  7. })
  8. .catch(err => { })//捕捉异常
  9. .finally(() => { });//无论是否成功与否都会执行
  10. //2
  11. axios.post("",{
  12. //传递的值
  13. },{
  14. //配置信息
  15. })
  16. //3
  17. axios({
  18. method:"post",
  19. url:"",
  20. data:{ },
  21. timeout:500,
  22. auth:{ //设置用户名和密码
  23. username:"",
  24. password:""
  25. },
  26. responseType:"json",
  27. responseEncoding:"utf-8"//设置字节编码
  28. }).then().catch()

fetch-jsonp

  1. 使用fetch-jsonp是通过拼接script,传递src的方式来跨域的,故只能是GET方法,则传值也只能在url上进行拼接
  2. fetch-jsonp返回的为promise对象,但其需要通过两次连续的调用then方法才能取到返回值,具体实现见下面。
1. 使用fetch-jsonp步骤
  1. 下载:cnpm install fetch-jsonp --save-dev
  2. 在所要使用的组件中引入jsonp:import fetchJsonp from "fetch-jsonp ";/ 将其加到Vue原型链中
  3. 使用
  1. //main.js
  2. import fetchJsonp from 'fetch-jsonp'
  3. Vue.prototype.fetch(fetchJsonp);
  4. //使用fetch-jsonp组件
  5. fetch(
  6. "http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1"
  7. )
  8. .then(res => {
  9. console.log(res.json());//res.json()是一个包含返回数据的promise
  10. return res.json();
  11. })
  12. .then(res => {
  13. console.log(res);
  14. });
  15. //异步方式
  16. let data = async ()=> await fetch(url);
  17. data().then(res=>{
  18. res.json().then((res1)=>{
  19. console.log(res1)
  20. })
  21. })

发表评论

表情:
评论列表 (有 0 条评论,49人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vue axios

    axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征: 1. 从浏览器中创建 XMLHttpR

    相关 vue+vuex+axios

    在写vue+vuex+axios请求数据之前,我们需要了解下什么是Vuex。 \\ Vuex \\ vuex是一个集中式的存储仓库【状态】,类似于 本地存储、数