ajax报错Uncaught SyntaxError: Unexpected end of JSON input

记录一下,ajax请求如下:

		let xhr = new XMLHttpRequest();
        xhr.open("get","https://music.kele8.cn/search");
        xhr.send();
       
        xhr.onreadystatechange = function () {
            // 判断当Ajax状态码为4时 
            if (xhr.status==200) {
                // 获取服务器端的响应数据
                let ans = JSON.parse(xhr.responseText);
                console.log(ans);
            }
			else {
				console.log("请求失败");
			}
        }

如果你确保后台返回的数据是正确的,get请求可以在浏览器地址栏打开,能够看到json格式的数据,但是控制台就是报错,数据也获取到了,那可能是你缺少一个判断

看下面代码:

let xhr = new XMLHttpRequest();
xhr.open("get", "https://music.kele8.cn/search?keywords="+str);
xhr.send();
                        
xhr.onreadystatechange = function () {
     if(xhr.readyState == 4) {
            if(xhr.status == 200) {
                let arr = xhr.responseText;
                let ctype = xhr.getAllResponseHeaders("content-type");
                if(ctype.indexOf("json") > -1) {
                         let res = JSON.parse(arr);
                         console.log(res);
                 }
                 else {
                        console.log(arr);
                }
          }
          else {
                reject('请求失败');
          }
      }
}

好像在onreadystatechange 事件里面需要判断xhr.readyState这个属性,不判断,就会出现json的报错

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值