【发布时间】:2020-07-08 09:37:09
【问题描述】:
我有一个 node.js 脚本,我在其中发出了一个休息请求(在这种情况下是一个 GET 请求)。 当我从命令行运行脚本时,输出会很好地显示在控制台中。 我想将输出显示到一个 html 页面(换句话说 - 我想最终从网页运行这个脚本)。
我创建了两个 node.js 脚本 - 一个用于其余请求,一个用于将输出定向到 html 页面。
休息请求脚本:
const request = require('request-promise')
const readline = require('readline')
const options = {
method: 'GET',
uri: 'http://dummy.restapiexample.com/api/v1/employees'
}
request(options)
.then(function (response) {
// Request was successful, use the response object at will
json: true
//console.dir(response)
JSON.parse(response)
console.dir((JSON.parse(response)), {depth: null, colors: true})
})
.catch(function (err) {
// Something bad happened, handle the error
})
let currentResult = request
outputResult(currentResult);
function outputResult(result) {
currentResult = (request);
}
输出导向器到 html 页面:
const restProto = document.getElementById('protocol');
const apiToTest = document.getElementById('uri');
const testApiResult = document.getElementById('output');
const currentResultOutput = document.getElementById('output');
function outputResult(result) {
currentResultOutput.textContent = result;
}
这是我试图指向的 html 页面:
<!DOCTYPE html>
<html>
<body>
<head>
<meta name="viewport" content="width=device-width" initial-scale=1" charset="UTF-8">
<style>
.collapsible {
background-color: white;
color: black;
cursor: pointer;
padding: 1px;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.active, .collapsible:hover {
background-color: #f1f1f1;
}
.content {
padding: 0 18px;
display: none;
overflow: hidden;
background-color: #f1f1f1;
}
</style>
</head>
<h2>API Test (v 0.1 alpha)</h2>
<form>
<label for="protocol">protocol</label>
<select name="restcall" id="protocol">
<option value="get">GET</option>
<option value="put">PUT</option>
<option value="post">POST</option>
<option value="delete">DELETE</option>
</select>
<label for="uri"> url: </label>
<input type="text" id="uri" name="uri">
<br><br>
<button class="collapsible">Advanced</button>
<div class="content">
<br>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat.</p><br>
</div>
<br><br>
<input type="submit" value="Send">
<br><br>
</form>
<textarea id="output" name="output" rows="20" cols="50">
Response displays here ...
</textarea>
<script>
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
//this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
</script>
<script src="./apitest2.js"></script>
<script src="./apitest3.js"></script>
<script src="./responseDirector.js"></script>
</body>
</html>
为了使这段代码正常工作,我缺少什么?
【问题讨论】:
-
几件事。 1. 我对这段代码的执行感到惊讶,因为回调函数中间的
json: true是无效的语法。您应该在运行时崩溃。 2.let currentResult = request只是将request模块复制到一个新变量中。 3.currentResult = (request)只是将request模块复制到一个新变量中......带括号:) 4. 你的获取函数是异步的,你在.then中得到它的结果,但是你什么都不做。你只有console.dir它,然后死路一条。 -
我也不懂
I want to direct the output to an html page.direct是什么意思? “指导页面”是什么意思? -
@JeremyThille 感谢您的回复。你能告诉我如何修复我的代码吗?我是 nodeJS 的新手。我参加了一些在线课程,但经验是最好的老师。非常感谢您给我的任何指示。
-
@JeremyThille :我想将输出显示到 html 页面。换句话说,目的是通过一个 html 页面运行这个脚本。
-
是的,现在写一个分析器。给我一分钟
标签: javascript node.js output