node.js - 使用hapi、vision和ejs时如何获取数组
问题描述
我通过 jquery post 将检查值作为对象发布到 nodejs。我不知道该怎么做request.payload.card
,因为我得到以下结果
内容request.payload
[Object: null prototype] { 'card[]': '2S' }
我曾尝试使用parse(...)
fromconst { 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 个复选框,它将作为字符串发送。如果我选择多个,则它以数组形式出现。
解决方案
你可以像request.payload['card[]']
这样在你的处理程序中使用它
let cards = request.payload['card[]']
cards = typeof cards === "string" ? [cards] : cards;
你也可以使用isArray
cards = Array.isArray(cards) ? cards : [cards];
推荐阅读
- java - Docker禁用失败时重启
- angular - 如何从 Angular 7 中的 API 响应中制作动态表单?
- c# - 如何在 asp.net core 2.1 中使用自定义消息设置状态代码?
- python - 如何将base64字符串转换为图像并存储在django模型中?
- oracle - 在 PL/SQL 函数中,我收到错误“此处只允许使用一个函数”。我该如何解决?
- angular - Angular ngIf 反映对属性的更改
- c++ - 从 Eigen Matrix 继承并从内存中构造或映射
- python - 在 Python / Seaborn 的图例中显示置信区间
- vue.js - 如何迭代嵌套的嵌套 json 数组?
- java - 将文件从一个目录复制到另一个目录并使用 servlet 打开新文档