1
このJavaScriptオブジェクトをクエリ文字列に送信して、サーバーが受信したときにオブジェクトとして使用できるようにしたいとします。クエリ文字列にjavascriptオブジェクトを送信するにはどうすればよいですか?
const xhr = new XMLHttpRequest();
var params = {
searchParams: {name: 'Joe'},
sortParam: {name: -1},
skip: 0,
limit: 50
};
xhr.open('get', '/api/endpoint' + formatParams(params));
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.responseType = 'json';
xhr.addEventListener('load',() => {
if (xhr.status === 200) {
...
}
else{
...
}
});
xhr.send();
formatParams機能は次のとおりです。:現在、私はXHRリクエストを使用しています
私はパラメータがその後に使用されているExpressのルータを介して要求を受け付けておりますサーバー上const formatParams = (params) => {
return "?" + Object
.keys(params)
.map(function(key){
return key+"="+params[key]
})
.join("&")
};
MongoDBのクエリは:
const express = require('express');
const router = new express.Router();
router.get('/endpoint', (req, res) => {
console.log(req.query.searchParams);
...
});
現在、サーバーは、文字列としてreq.query.searchParams
を示している
[オブジェクトのオブジェクト]
'はconsole.log(JSON.stringify(req.query.searchParams))何であるか;'示します? –
また、このようなパラメータはフォーマットしないでください。それらはURLエンコードされる必要があります。 jqueryを使用する場合は、jquery.paramsメソッドを使用します。これは重労働です。 –
オブジェクトをJSONに変換する必要があります。これは、ネイティブオブジェクトのtoStringメソッドを使用しています。 – ste2425