javascript - 将数据从客户端javascript发送到节点js
问题描述
问题是我在将数据发送回节点 js 时遇到错误,每次我发送一些东西时,令牌似乎都会增加,所以有些东西被发送回来,但我不断收到错误。
我使用 body-parser 从客户端 javascript 向节点 js 发送一个发布请求
这是客户端代码
<dl>
{{#each this}}
<dd>
<a href="topic.hbs" onclick="getRoomId({{room_id}})">{{room_name}}</a>
</dd>
{{/each}}
</dl>
<script>
function getRoomId(id){
var xhr = new XMLHttpRequest();
xhr.open('POST', 'topic.hbs');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify(id));
}
</script>
这是节点 js 代码
const bodyParser = require('body-parser')
app.use(express.static('./'));
app.use(bodyParser.json());
app.post('/topic.hbs', function(req, res){
console.warn('body: ', req.body);
res.render('topic.hbs')
});
我希望将 id 发送回节点 js,但不断收到此错误。
SyntaxError: Unexpected token 1 in JSON at position 0
at JSON.parse (<anonymous>)
at createStrictSyntaxError (/Users/Ben255/Desktop/webprojekt/Forum/node_modules/body-parser/lib/types/json.js:158:10)
at parse (/Users/Ben255/Desktop/webprojekt/Forum/node_modules/body-parser/lib/types/json.js:83:15)
at /Users/Ben255/Desktop/webprojekt/Forum/node_modules/body-parser/lib/read.js:121:18
at invokeCallback (/Users/Ben255/Desktop/webprojekt/Forum/node_modules/raw-body/index.js:224:16)
at done (/Users/Ben255/Desktop/webprojekt/Forum/node_modules/raw-body/index.js:213:7)
at IncomingMessage.onEnd (/Users/Ben255/Desktop/webprojekt/Forum/node_modules/raw-body/index.js:273:7)
at IncomingMessage.emit (events.js:203:15)
at endReadableNT (_stream_readable.js:1145:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
解决方案
所以你的问题是你试图 JSON.Stringify 一个数字,它返回一个数字。在您的控制台中,输入JSON.stringify(5)
,它将返回5
.
您需要发送一个 JSON 对象,因为这就是您在编写xhr.setRequestHeader('Content-Type', 'application/json');
. 所以代替这个:
xhr.send(JSON.stringify(id));
尝试这样的事情:
xhr.send(JSON.stringify({id: id})
这将发送"{"id":5}"
.
推荐阅读
- html - 如何向我的 URL 添加新参数 - Laravel?
- python - 如何在 Python / Django 中获取内存中视频的持续时间?
- raku - 为什么 comb 在循环内的行为不同?
- android - WordPress Android 应用程序在我启动应用程序时崩溃
- javascript - 表格数据提交
- ruby - 如何使用 google api ruby gem 查询 google analytics api?
- c++ - 在库中使用 CMake 的 Abseil
- amazon-s3 - 从 S3 提取巨大的 tar.gz 档案而不将档案复制到本地系统
- graphql-js - 如何为 MongoDB 的 collection.find() 函数中的 MongoDB 排序属性实现 GraphQL Scalar?
- java - 在java中通过SOAP发送附件