为了账号安全,请及时绑定邮箱和手机立即绑定

通过 promise 对象实现ajax请求失败,并抛出错误

通过 promise 对象实现ajax请求失败,并抛出错误

宝慕林4294392 2018-12-19 18:15:43
问题描述:想通过 promise 对象来实现 ajax数据请求//getDate.json{"name":"zzz","age":22,"say":"hello zzz"}    //demo.js    let getJson = url =>{    let promise = new Promise((resolve,reject) =>{    let xhr = new XMLHttpRequest();        xhr.open("GET",url,true);        xhr.onreadystatechange = () =>{        if(this.readyState !== 4){            return;        }        if(this.status == 200){            resolve(this.response);        }else{            reject(new Error(this.statusText))        }    }    xhr.responseType = 'json';    xhr.setRequestHeader('Accept','application/json');    xhr.send(null);});    return promise;};getJson("getDate.json").then((json) =>{console.log(json);},(err)=>{console.log(err)});抛出错误:(intermediate value) is not a constructor
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

你代码错误有点多
1.两个new
2.this换成xhr,箭头函数this这个知识点查下吧
3.onsetRequestHeader没有这个函数,应该是setRequestHeader
4.设置格式为json不能获取responseText,必须设置responseType为text才行,另外改成response也行

贴上我改后的代码

let getJson = url =>{

    let promise = new Promise((resolve,reject) =>{

    let xhr = new  XMLHttpRequest();

        xhr.open("GET",url,true);

        xhr.onreadystatechange = () =>{

        if(xhr.readyState !== 4){

            return;

        }

        if(xhr.status == 200){

            resolve(xhr.response);

        }else{

            reject(new Error(xhr.statusText))

        }

    }

    xhr.responseType = 'json';

    xhr.setRequestHeader('Accept','application/json');

    xhr.send(null);

});

    return promise;

};


getJson("getDate.json").then((json) =>{console.log(json);},(err)=>{console.log(err)});


查看完整回答
反对 回复 2019-01-03
  • 1 回答
  • 0 关注
  • 580 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号