Я хочу отправить этот объект javascript в строку запроса, чтобы я мог использовать его в качестве объекта, когда он был получен сервером. В настоящее время я использую запрос XHR:Как отправить объект 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 выглядит следующим образом:
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
как строка
[объект Object]
что 'console.log (JSON.stringify (req.query.searchParams));' показ ? –
Также: не форматируйте параметры, подобные этому. Они должны быть закодированы по URL-адресу. Если вы используете jquery, используйте его метод jquery.params, который делает тяжелую работу для вас. –
Вам необходимо преобразовать ваш объект в JSON. Он использует собственный метод toString. – ste2425