我打开 Hackerrank 示例测试并尝试使用可能用于进行 AJAX 调用的方法。XMLHttpReq
, fetch
等等。它们都不起作用;XHR
and fetch
方法不可用。
First 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.fetch
and global.fetch
无济于事。
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();
}
黑客排名 说XMLHttpRequest
没有定义。
Hackerrank 正在执行 Node.JS 代码,这解释了原因XHR
没空,也许我必须要求自己。除非我不能npm install
任何东西,我只能访问他们的小 IDE。
如何使用 JavaScript 在此平台中进行 AJAX 调用?
我已经通过了 HackerRank REST API 认证并遇到了同样的问题。 HackerRank 使用 NodeJs 环境来运行代码(在语言选择中提到),因此 XMLHttpRequest 和 fetch 都不可用(因为这些仅适用于浏览器)。
我建议你使用requestnpm 包 https://www.npmjs.com/package/request,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)
});
});
}
注意:请求包最近已被弃用,但它仍然适合您的用例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)