vue.js - 如何修复 axios 中的“TypeError:name.toUpperCase 不是函数”
问题描述
我想使用 vue js 中的 axios 从 dbpedia 端点获取数据。
我用来axios.get
从 dbpedia 获取数据,我在控制台中得到了错误说:
TypeError:name.toUpperCase 不是函数
我该如何解决?
created(){
this.fetch();
},
methods: {
fetch(){
axios
.get('http://id.dbpedia.org/sparql?query=SELECT+DISTINCT+?concept+WHERE+{+?s+a+?concept+}+LIMIT+50', {
headers: 'Access-Control-Allow-Origin: *'
}).then(response => {
/* eslint-disable */
console.log('SUCCESS');
console.log(response);
}).catch((e) => {
console.log(e);
})
}
},
解决方案
您需要将您的 Axios 请求更改为:
methods: {
async fetch () {
await axios.get('https://cors.io/?http://id.dbpedia.org/sparql?query=SELECT+DISTINCT+?concept+WHERE+{+?s+a+?concept+}+LIMIT+50', {
headers: {'Access-Control-Allow-Origin': *},
mode: 'cors',
}).then(response => {
/* eslint-disable */
console.log('SUCCESS');
console.log(response.data);
}).catch((e) => {
console.log(e);
}
}
}
五个变化:
1)把axios做成headers
对象(注意引号在哪里)
2)console.log(response.data)
3) 添加mode: 'cors'
4)cors
为 URL 添加前缀,因为您正在从托管环境之外的第三方域检索数据
5) 将您的fetch
函数包装在 中async
await
,因为 axios 是一个基于承诺的库。
推荐阅读
- c - 在 Ubuntu 中交付 SDL2 项目以进行部署
- r - 使用 read.csv 读取特殊文件
- python - 当我尝试使用 render_template Flask 时,我的网页上没有显示任何内容
- json - 如何将json字符串解析为scala中的地图列表?
- c++ - 缺少 Qt 5 库
- python - 如何将全局变量的值传递给 tkinter 中的所有类?
- c - c - sendto/recvfrom 在某些方面没有得到正确的信息
- node.js - 是否可以实时向客户端发出 2 个不同的 WebRTC 视频轨道?
- android - execSQL能否支持多条sql语句
- python - Psycopg2 - SQL 结果到 json 列表