サーバ側Node ソース
Node.js
1onst bodyParser = require('body-parser'); 2const express = require('express'); 3const app = express(); 4app.use(bodyParser.json()); 5app.use(express.static(__dirname + '/static')); 6app.post('/test', async (req, res) => { 7 console.log(JSON.stringify(req)); 8}); 9
クライアント側
Javascript(jQuery)
1$.ajax({ 2 url: 'http://localhost/test', 3 type: 'POST', 4 data: { id: '12345' }, 5 dataType: 'json', 6 contentType: 'application/json', 7 });
これを実行すると、サーバ側で以下のエラーが発生します。
error
1SyntaxError: Unexpected token b in JSON at position 0 2 at JSON.parse (<anonymous>) 3 at createStrictSyntaxError (C:\Program Files (x86)\Nodist\bin\node_modules\body-parser\lib\types\json.js:158:10) 4 at parse (C:\Program Files (x86)\Nodist\bin\node_modules\body-parser\lib\types\json.js:83:15) 5 at C:\Program Files (x86)\Nodist\bin\node_modules\body-parser\lib\read.js:121:18 6 at invokeCallback (C:\Program Files (x86)\Nodist\bin\node_modules\body-parser\node_modules\raw-body\index.js:224:16) 7 at done (C:\Program Files (x86)\Nodist\bin\node_modules\body-parser\node_modules\raw-body\index.js:213:7) 8 at IncomingMessage.onEnd (C:\Program Files (x86)\Nodist\bin\node_modules\body-parser\node_modules\raw-body\index.js:273:7) 9 at IncomingMessage.emit (events.js:203:15) 10 at endReadableNT (_stream_readable.js:1145:12) 11 at process._tickCallback (internal/process/next_tick.js:63:19)
ちなみに、これが出る前にいろいろいじりまわしており、動作していることがあったのですが、console.log(req.body.id ) であっても値を取得することができませんでした。
ちなみに、Chrome Talend API Tester でリクエストしたり、URL?id=12345 の形式でPOSTすれば正常動作しました。
この違いがどのように作用しているのか、お分かりになる方にご教示いただきたいです。
回答3件
あなたの回答
tips
プレビュー