Я отправляю проверенные значения как объект через jquery post для nodejs. я не уверен, как это сделать request.payload.card
, как я получаю следующий результат
содержание request.payload
[Object: null prototype] { 'card[]': '2S' }
Я пытался использовать parse(...)
из const { parse } = require('querystring');
, но это дает пустой объект {}
обновление
вот моя форма в виде ejs
<form id="frm_cards" method="POST" action="/g/f15cde50-6c2b-479a-8105-3c1ea63fb982/e">
<div class="container">
<div id="cards">
<div class="row"><div class="row col-sm-12"><div class="col-sm-6 col-md-2"><div><img class="col-sm-12 col-md-11" src="https://....com/static/img/KH.png"></div><div class="text-center"><input name="card" id="card_[object Object]" type="checkbox" value="KH"> Discard</div></div><div class="col-sm-6 col-md-2"><div><img class="col-sm-12 col-md-11" src="https://....com/static/img/4H.png"></div><div class="text-center"><input name="card" id="card_[object Object]" type="checkbox" value="4H"> Discard</div></div><div class="col-sm-6 col-md-2"><div><img class="col-sm-12 col-md-11" src="https://....com/static/img/9S.png"></div><div class="text-center"><input name="card" id="card_[object Object]" type="checkbox" value="9S"> Discard</div></div><div class="col-sm-6 col-md-2"><div><img class="col-sm-12 col-md-11" src="https://....com/static/img/JS.png"></div><div class="text-center"><input name="card" id="card_[object Object]" type="checkbox" value="JS"> Discard</div></div><div class="col-sm-6 col-md-2"><div><img class="col-sm-12 col-md-11" src="https://....com/static/img/KC.png"></div><div class="text-center"><input name="card" id="card_[object Object]" type="checkbox" value="KC"> Discard</div></div></div><div class="col-xs-2"></div></div></div>
</div>
<button id="submit" type="button" class="btn btn-primary btn-block">submit</button>
</form>
JQuery в представлении, которое отправляет сообщения обработчику
var allVals = [];
$('input[name="card"]:checked').each( function(){
allVals.push($(this).val());
});
if(allVals.length == 0 ){
alert(`error`);
return;
}
const params = $('#frm_cards').serialize();
//stringify to handle arrays
$.post(`/g/<%= gId %>/e`, params )
.done((data, textStatus, xhr) => {
...
})
.fail((error) => { console.error(error)});
мой обработчик
const cards =
typeof req.payload.card === "string"
? [req.payload.card]
: req.payload.card;
Если я выбрал 1 флажок, он отправляется как строка. если я выберу больше одного, то это будет массив.