问题描述:Uncaught TypeError: Cannot read property‘变量名‘ of undefined

问题描述:Uncaught TypeError: Cannot read property’变量名’ of undefined

在ajax请求中获取json数据,报错Uncaught TypeError: Cannot read property'变量名' of undefined,先贴代码
<!DOCTYPE html>
<!--请求QQ音乐api-->
<html>
    <head>
        <meta charset="utf-8">
        <title>useAjax</title>
    </head>
    <div>
        <p id="show"></p>
    </div>
<body>
<script src="getAjax.js" type="text/javascript"></script>
<script type="text/javascript">
      getAjax("https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?g_tk=5381&uin=0&format=json&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=h5&needNewCode=1&tpl=3&page=detail&type=top&topid=36&_=1520777874472",function(xhr){
        //console.log(xhr)
        var data=xhr.responseText;

        var a = data.songlist[0].data.albumname;
        //var h1 = document.createElement("p");
        //h1.innerHTML = a;
       //document.body.appendChild(h1);

        var show = document.getElementById('show');
        show.innerHTML = a;
    })
</script>
</body>
</html>
这里控制台报错: ![1](https://img-blog.csdnimg.cn/20210427085626379.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1NzQwMzY5,size_16,color_FFFFFF,t_70#pic_center)

原因分析:

这里显示 *Uncaught TypeError: Cannot read property '0' of undefined* 在网上查阅相关资料后,发现是数据格式问题, 我的代码请求返回的数据是json格式,在js中类型就变成了字符串,自然就不能当做对象使用,所以这一行就会出错
 var a = data.songlist[0].data.albumname;

解决方案:

这一行代码:
var data=xhr.responseText;
改为:
 var data=eval("("+xhr.responseText+")");
这里使用eval函数,将json字符串转变为json对象
这样就能显示数据了 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210427091426619.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1NzQwMzY5,size_16,color_FFFFFF,t_70)

这里还有一个问题 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210427091528274.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1NzQwMzY5,size_16,color_FFFFFF,t_70)

目前还不知道什么原因,但数据能正常显示,等以后搞清楚了再补上
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值