如何从浏览器将数据发送到节点脚本
How do I send data to a node script from a browser?
在页面加载时,我在脚本标签中运行此javascript:
var xhttp = new XMLHttpRequest();
xhttp.open("POST", "http://lvh.me:1337", true);
xhttp.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
xhttp.send(JSON.stringify({hello:"goodbye"}));
那么节点脚本的代码是
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {
'Content-Type': 'text/plain',
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept"
});
console.log(request);
response.end("");
}).listen(1337);
但是在控制台.log中,我在任何地方都看不到我的{"hello":"goodbye"}对象。如何访问此对象?
createServer
文档告诉我们,您提供的回调将由request
事件触发。request
事件文档告诉我们,request
(第一个参数)是一个http.IncomingMessage
。它没有 body
属性,但它实现了 ReadableStream,您可以侦听 'data'
事件来收集数据:
// ES2015 (all of the below is supported in current NodeJS)
let body = '';
request.on('data', chunk => body += chunk);
request.on('end', () => console.log(JSON.parse(body)));
或
// ES5
var body = '';
request.on('data', function (chunk) {
body += chunk;
});
request.on('end', function(){
console.log(JSON.parse(body));
});
有很多http服务器实现可以为您抽象此过程,并为您提供使用request.body
。 body-parser
就是一个很好的例子,甚至可以为您解析 JSON。
相关文章:
- 为什么正文标记后的脚本标记在子节点中计数
- 公共脚本文件上的访问节点文件
- 为什么不't克隆节点<脚本>执行标记
- 不存在的XML节点破坏了我的脚本
- 如何从节点脚本中放入REPL
- 如何在节点上运行的脚本中使用 jsdoc.js
- 在节点脚本中,如何监视文件的更改并获取更新的内容
- 是否可以从网页运行节点脚本
- 如何将缓冲区作为管道输入传递给节点脚本
- 如何使用 shell 脚本文件运行我的节点脚本
- 如何从浏览器将数据发送到节点脚本
- 节点脚本需要向调用它的 Angular 服务返回成功/失败
- 如何在节点脚本中重用Angular模块
- 将mac节点脚本转换为windows
- 使用ajax与现有节点脚本通信
- 使用async中断节点脚本
- 当向数据库插入大量记录时,我应该如何编写节点脚本以最小化内存使用
- 如何在html内正确引用节点脚本模块
- 节点脚本不会通过 https 运行
- 从文件内部执行节点脚本