jquery - jQuery getJSON 到 axios
问题描述
我想将 jQuery api 调用更改为 axios api 调用。
jQuery代码如下
$.getJSON('some_url?CART_GOODS_INFO=' + encodeURIComponent(cartData) + '&callback=?', function (data) {
if (data.IsSuccess) {
alert('success');
} else {
if ($.trim(data.ResultMessage) != '') {
alert(data.ResultMessage);
} else {
alert('failed');
}
}
});
我试图将此代码更改为 axios
axios.get('some_url', {
params: {
CART_GOODS_INFO: encodeURIComponent(cartData)
}
})
.then((response) => {
console.log(response)
})
.catch((error) => {
console.log(error)
})
.then(() => {
// always executed
})
我收到与我的问题无关的 CORS 错误。
无论如何,这似乎是从“jQuery getJSON”到“axios get”的正确代码吗?
我不太确定'&callback=?'
jQuery 代码中的内容。
供参考。那some_url
不是实际的网址。以防万一您感到困惑。
大家有什么想法,欢迎补充。提前致谢。
解决方案
您在 axios 上遇到 CORS 错误,但在 jQuery 上却没有。
CORS 错误意味着您的服务器在响应中没有 Allow access control origin 标头。由于默认情况下浏览器不允许跨域调用,因此您会收到此错误。
在早期,JSONP 被用作解决此问题的方法。在请求中发送回调,服务器通过将响应包装在回调函数中来发送响应。这就是你的 jQuery 代码正在做的事情。在此处阅读更多相关信息。
为了解决这个问题,你必须想办法用 axios 进行 JSONP 调用。
希望能帮助到你。
推荐阅读
- html - 如何用三个级别修复“我的下拉菜单”
- node.js - 有没有办法使用 selenium web-driver (nodejs) 获取当前浏览器名称?
- sql - EXCEPT 和 DISTINCT 在哪些情况下不同?
- amazon-web-services - AWS Cloud Formation:如何自动化 EC2 实例克隆/快照
- react-native - React Native Geolocation 在 IOS 上无法正常工作
- string - 如何根据要求对字符串进行分段
- javascript - 是否有可能知道装饰器在一个类中定义了哪些方法和属性
- javascript - JavaScript : 根据与 x 的绝对差值重新排列数组元素
- flutter - Firestore - 按子集合中的文档字段排序文档
- r - 为一定数量的行创建唯一的重复变量