您应该再次使用res.write(),然后使用res.end()。后者不应该返回数据。
虽然它应该可以在第一个参数中返回一个字符串值,然后将字符串的编码格式定义为第二个参数,但我从未尝试过......
"如果指定了data,则相当于调用response.write(data, encoding)后跟response.end(callback)。"
https://nodejs.org/api/http.html#http_response_end_data_encoding_callback
var http = require('http');//http package
var url = require('url');// url package
var list = ['0', '0', '1', '0'];
var server = http.createServer(function(req, res){// creates server
res.writeHead(200, {'Content-Type': 'text/html'});
var q = url.parse(req.url, true).query//pulls apart the url
var temp = q.temp;
res.write(temp);
console.log(q.temp);
res.write(list[2] ); //testing artifact displayes them on a browser
res.end();
}).listen(7474)
在你的情况下,真的没有理由同时调用.write(),所以我将它们结合起来......
res.write(JSON.stringify([ temp, list[2] ]));
或者
res.write(JSON.stringify({ temp, listItem:list[2] }));
编辑:
在自己运行此代码后,您会遇到一个不同的问题,这会给您带来那些令人困惑的错误。现在试试这个...
var http = require('http');//http package
var url = require('url');// url package
var list = ['0', '0', '1', '0'];
var server = http.createServer(function(req, res){// creates server
if (req.url === '/favicon.ico') {
res.writeHead(204);
res.end();
} else {
res.writeHead(200, {'Content-Type': 'text/html'});
var q = url.parse(req.url, true).query//pulls apart the url
var temp = q.temp;
res.write(temp);
res.write(list[2]); //testing artifact displayes them on a browser
res.end();
}
}).listen(7474)
server.on('listening', function() {
console.log('listening on port 7474')
});
在页面初始页面加载完成后,浏览器正在向favicon.ico 发出“默认”请求——加载每个网页的网站图标。该请求将使您的程序崩溃,因为它不包含您当前未检查的查询参数 `?temp=。
我提供的解决方案不适用于生产应用程序,但这显然是一个小演示项目,因此它应该适合您的用例。
如果您想开发一个更大、更稳定的生产应用程序,您将不得不进行大量重组。如果您不想使用框架,这可能是一个起点...
https://adityasridhar.com/posts/how-to-use-nodejs-without-frameworks-and-external-libraries
我的所有节点应用程序都使用 Express 框架,这使得一些默认配置更快,并且有数千个在线教程可以帮助您入门...
https://medium.com/@purposenigeria/build-a-restful-api-with-node-js-and-express-js-d7e59c7a3dfb
- 我只是在 Google 上搜索了这些教程作为示例,但您应该自行研究以找到最合适的。