javascript - E6 Ajax request not working -


i have script want fetch json data endpoint, error, script:

function httpget(url) {     return new promise(         function (resolve, reject) {             var request = new xmlhttprequest();             request.onreadystatechange = function () {                 if (this.status === 200) {                     // success                     resolve(this.response);                 } else {                     // went wrong (404 etc.)                     reject(new error(this.statustext));                 }             }             request.onerror = function () {                 reject(new error(                     'xmlhttprequest error: '+this.statustext));             };             request.open('get', url);             request.send();         }); }  var url = 'https://api.jsonplaceholder.com';  httpget(url)   .then(json.parse)   .then((r) => {     console.log(r);   }).catch(function(error) {     console.log(error);   }); 

then, in console throws error:

error @ xmlhttprequest.request.onreadystatechange (app.js:11) @ app.js:18 @ promise () @ httpget (app.js:2) @ app.js:25

you can't check status, have check readystate == 4 before can decide happened:

function httpget(url) {     return new promise(         function (resolve, reject) {             var request = new xmlhttprequest();             request.onreadystatechange = function () {                 if (this.readystate === 4) {                            // ***                     if (this.status === 200) {                          // success                         resolve(this.response);                     } else {                         // went wrong (404 etc.)                         reject(new error(this.statustext));                     }                 }                                                       // ***             }             request.onerror = function () {                 reject(new error(                     'xmlhttprequest error: '+this.statustext));             };             request.open('get', url);             request.send();         }); } 

the spec says accessing this.response before request complete should return empty string, me using chrome v57, doing gives error quoted. adding readystate check fixes it.


Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -