私はこの午後中ずっと行ってきました、デバッグを手伝ってください。`fetch`がJSON文字列をクエリ文字列に変換したのはなぜですか?副作用?
クライアント側:
fetch('/admin/edit/tags', {
method: 'post',
credentials: 'same-origin',
headers: {
'content-type': 'application/json',
'accept': 'application/json'
},
body: form.getFormData('json')
})...
console.log(form.getFormData('json'));
戻り{"id":"11","tag":"tag12","submit":"Update"}
サーバーサイド(Node.jsの):リクエストを処理するため
コード:
function (req, res) {
var bufferBody = [];
req.on('error', err => {
return res.status(400).send('request error.');
}).on('data', chunk => {
bufferBody.push(chunk);
}).on('end',() => {
res.on('error', err => {
return res.status(400).send('response error.');
});
req.bufferBody = bufferBody;
req.stringBody = Buffer.concat(bufferBody).toString();
//req.json = JSON.parse(req.stringBody);
req.body = qs.parse(req.stringBody);
})
}
ルート:
{
method: 'POST',
path: '/admin/edit/tags',
handle: PC(function*(req, res) {
var data = req.body;
console.log(data);
console.log(req.stringBody);
})
}
これは、バッファの文字列です:theBuffer.toString()
%7B%22id%22%3A%2211%22%2C%22tag%22%3A%22tag12%22%2C%22submit%22%3A%22Update%22%7D=
これは、クエリ文字列です:qs.parse(theBufferString)
{ '{"id":"11","tag":"tag12","submit":"Update"}': '' }
私はすべての場所をチェックして、ヘッダが正しいです。 jsonStringをqueryStringに変える原因は何ですか?
私はjsObjectをqueryStringに変えることができますが、実際にはjsonStringを使いたいと思っています。
いいえ、その投稿はjsfiddleに固有です。私は時間前にそれを見ました。 – alexcres
@AlexBlexその投稿はjsfiddleに固有で、 'json string'の代わりに' query string'を使うことをお勧めします。しかし 'fetch'は' json string'で動作するとは思いませんか? – alexcres
これは、fetchとformdataを使ってPOSTする方法の非常に有効な例です。 –