How to make AJAX request in Hackerrank using JavaScript?

爱⌒轻易说出口 提交于 2021-02-18 18:48:38

问题


I open the Hackerrank example test and play around with methods one might use to make an AJAX call. XMLHttpReq, fetch, etc. None of them work; XHR and fetch methods are unavailable.

First fetch:

async function myFetch() {
  let response = await fetch('https://jsonplaceholder.typicode.com/todos/1');
  let data = await response.json();
  console.log(data);
}

Hackerrank throws an error because fetch is not a function. I also tried window.fetch and global.fetch to no avail.

I tried XHR:

function myXHR() {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
    if (this.readyState === 4 && this.status === 200) {
      console.log(this.responseText);
      // or JSON.parse(this.responseText);
    }
  };
  xmlhttp.open('GET', 'https://jsonplaceholder.typicode.com/todos/1');
  xmlhttp.send();
}

Hackerrank says XMLHttpRequest is not defined.

Hackerrank is executing Node.JS code, that explains why XHR isn't available, I have to require myself perhaps. Except I can't npm install anything, all I have access to is their little IDE.

How do you make an AJAX call in this platform with JavaScript?


回答1:


I've passed the HackerRank REST API certification and had the same issue. HackerRank uses a NodeJs environnement to run you code (it's said in the langage selection), so neither XMLHttpRequest nor fetch are available ( as these are Browser only ).

I suggest you use the request npm package, HackerRank allows you to require it. One downside is that request doesn't support Promises & Async/Await unless you import other packages (which HackerRank doesn't seem to recognize).

Here's what I used :

const request = require('request');

function myFetch(url) {
  return new Promise((resolve, reject) => {
    request(url, function (error, response, body) {
      if(error) reject(error)

      else resolve(body)
    });
  });
}

Note : request package has been recently deprecated, but it will still work well for your use case.



来源:https://stackoverflow.com/questions/63631998/how-to-make-ajax-request-in-hackerrank-using-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!