如何将Axios PUT请求响应中的ContactID赋值给变量并解决this报错
问题核心原因
- 报错
Cannot read property 'axiosResponse' of undefined的触发逻辑:你在.then()回调里使用了普通匿名function,这类函数的this指向在运行时会脱离原组件/类的实例上下文,严格模式下直接变为undefined,因此无法读取到实例上的axiosResponse属性。 - 赋值逻辑的偏差:你当前代码直接把响应数据转成字符串存入数组,丢失了结构化数据的可访问性,后续根本没法从字符串里便捷提取嵌套的
ContactID值。
落地解决方案
1. 修复this指向问题
两种常用的无报错写法,二选一即可:
- 优先使用箭头函数作为回调:箭头函数没有独立的this绑定,会直接继承外层上下文的this值,解决指向错位问题。
- 兼容旧写法的方案:在调用Axios请求前,先把当前实例的this存到临时变量(如
const self = this),回调内用临时变量替代this访问axiosResponse属性。
2. 正确提取嵌套结构的ContactID
根据你提供的响应格式,数据是带字符串键"0"的嵌套对象,不需要做多余的JSON转换,直接按结构逐层取值即可。
完整可运行示例
// 提前定义存储ContactID的自定义变量 let targetContactID = ''; axios.put('你的请求地址', 请求参数) .then((response) => { console.log('原始响应:', response.data); // 按响应结构逐层取ContactID targetContactID = response.data["0"].Contact.ContactID; // 直接存结构化响应对象,不需要手动转字符串 this.axiosResponse.push(response.data); }) .catch((error) => { console.log('请求异常:', error); });
注意事项:如果后端后续调整返回格式,把顶层对象换成数组结构,取值路径要对应改为
response.data[0].Contact.ContactID。从你提供的样例数据来看,顶层是键名为"0"的普通对象,需要用带引号的字符串键取值。
内容的提问来源于stack exchange,提问作者Jeandre
相关产品推荐
相关产品推荐

