猿问

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

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


我使用 body-parser 从客户端 javascript 向节点 js 发送一个 post 请求


这是客户端代码


<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)


呼唤远方
浏览 142回答 1
1回答

慕勒3428872

所以你的问题是你试图 JSON.Stringify 一个数字,它返回一个数字。在您的控制台中,输入JSON.stringify(5),它将返回5.您需要发送一个 JSON 对象,因为这就是您在编写xhr.setRequestHeader('Content-Type', 'application/json');.&nbsp;所以而不是这个:xhr.send(JSON.stringify(id));尝试这样的事情:xhr.send(JSON.stringify({id: id})这将发送"{"id":5}".
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答