javascript - 如何使用 JavaScript 在 Hackerrank 中发出 AJAX 请求?

标签 javascript node.js xmlhttprequest

我打开 Hackerrank 示例测试并尝试使用可能用于进行 AJAX 调用的方法。 XMLHttpReq , fetch等。它们都不起作用; XHRfetch方法不可用。
fetch :

async function myFetch() {
  let response = await fetch('https://jsonplaceholder.typicode.com/todos/1');
  let data = await response.json();
  console.log(data);
}
Hackerrank 抛出错误,因为 fetch不是函数。我也试过window.fetchglobal.fetch无济于事。
我试过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 说 XMLHttpRequest没有定义。
Hackerrank 正在执行 Node.JS 代码,这解释了为什么 XHR不可用,我可能不得不要求自己。除了我不能npm install任何东西,我只能访问他们的小 IDE。
你如何在这个平台上使用 JavaScript 进行 AJAX 调用?

最佳答案

我已经通过了 HackerRank REST API 认证并且遇到了同样的问题。 HackerRank 使用 NodeJs 环境来运行您的代码(在语言选择中说),因此 XMLHttpRequest 和 fetch 都不可用(因为它们仅适用于浏览器)。
我建议你使用 request npm package , HackerRank 允许你要求它。
一个缺点是请求不支持 Promises & Async/Await,除非您导入其他包(HackerRank 似乎无法识别)。
这是我使用的:

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)
    });
  });
}
注意:请求包最近已被弃用,但它仍然适用于您的用例。

关于javascript - 如何使用 JavaScript 在 Hackerrank 中发出 AJAX 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63631998/

相关文章:

react-native - 用 Jest 测试react-native应用程序时未定义XMLHttpRequest

javascript - 有人在 jsbn.js 上实现了 GWT JSNI 包装器吗?

javascript - Jade 页面被多次渲染

javascript - 使用随机数创建变量

javascript - 如何使用 axios 编辑和更新页面的 html?

node.js - 在nodejs中 Sequelize findAll排序顺序

javascript - 将 LocalStorage 发送到服务器端 php 的正确方法

javascript - puppeteer 师 : Timeout or sleep or wait inside Page. 评估()

javascript - 处理 XMLHttpRequest 异常

javascript:范围外的 json 的 XMLHttpRequest