繁体   English   中英

从客户端 javascript 向节点 js 发送数据

[英]send data from client side javascript to node js

问题是我在将数据发送回节点 js 时遇到错误,每次我发送一些东西时,令牌似乎都会增加,所以有些东西被发送回来,但我不断收到错误。

我从客户端 javascript 发送一个 post 请求到带有 body-parser 的节点 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 object,因为这就是您在编写xhr.setRequestHeader('Content-Type', 'application/json');时告诉服务器的内容。 . 所以代替这个:

xhr.send(JSON.stringify(id));

尝试这样的事情:

xhr.send(JSON.stringify({id: id})将发送"{"id":5}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM