调用API获取customer_name时出现Cannot read property 'customer_name' of undefined错误求助
解决API响应中获取customer_name字段的错误问题
嘿,我一眼就瞅出问题所在了!你这段代码里多做了一步完全没必要的转换,直接导致没法正确访问目标字段:
你先用var d = JSON.parse(e);把API返回的JSON字符串转换成了JavaScript对象,这一步是正确的,但紧接着你又用JSON.stringify(d)把这个对象转回成了JSON字符串并赋值给user。字符串根本没有.results这种属性,自然就会抛出Cannot read property 'customer_name' of undefined的错误。
另外还要注意:API返回的results是一个数组(看响应里的results是用[]包裹的),哪怕只有一条数据,你也得先取数组里的第一个元素,再去访问customer_name。
给你修正后的代码:
success:function(e){ var d = JSON.parse(e); if (d.status === 'success') { // 直接用解析好的d对象,不用转成字符串 console.log(d); // 先取results数组的第一个元素,再获取customer_name console.log(d.results[0].customer_name); // 顺便调整下localStorage的用法,用固定字符串当key更稳妥 localStorage.setItem('customerName', d.results[0].customer_name); localStorage.setItem('gameAmount', d.results[0].game_amount); } else { alert('Username and Password Invalid'); // 这里你之前拼写错了Invalid } }
再给你划几个关键注意点:
- 解析后的JSON对象直接用就行,别再转成字符串,不然没法用点语法访问属性
- 只要看到响应里是
[]包裹的结构,那就是数组,必须通过索引(比如[0])获取数组内的元素 - 顺手帮你改了代码里的拼写错误,
Invslid应该是Invalid,不然提示文案会有问题
内容的提问来源于stack exchange,提问作者Sagar Kodte
相关产品推荐
相关产品推荐

