我尝试将一些复选框值从HTML发送到Node JS。在我的HTML文件中,我在表格中有一些复选框。我得到了选中的复选框值,如下所示,
$("#createSS").click(function (event) {
event.preventDefault();
var searchIDs = $("#imgTable input:checkbox:checked").map(function () {
return $(this).val();
}).get();
console.log("selected::::" + searchIDs);
});
我的HTML表单是,
<form action="/addSlideShow" method="POST">
<table id="imgTable" class="table">
{{#images}}
<tr>
<td><input id={{imgURL}} type="checkbox" name="ch" value={{imgURL}}/></td>
</tr>
{{/images}}
</table>
<input id="createSS" type="submit" value="Create Slide Show" class="btn btn-success pull-left" disabled/>
</form>
在Node JS中,
app.post('/addSlideShow', function (req, res) {
var $ = req.body;
$('td').each(function () {
console.log($(this).text());
});
});
当我点击HTML中的按钮时,for is不会提交。我该如何解决这个问题?
提前致谢!
答案 0 :(得分:3)
这是因为您没有将数据发布到表单网址。由于您使用了永远不会提交的event.preventDefault()
,也未使用$.ajax()发布数据
尝试使用ajax发布数据,
$("#createSS").click(function (event) {
event.preventDefault();
var searchIDs = $("#imgTable input:checkbox:checked").map(function () {
return $(this).val();
}).get();
console.log("selected::::" + searchIDs);
$.ajax({
url:'/addSlideShow',type:'post',
data:{searchid:searchIDs},
success:function(response){
console.log(response);
}
});
});
在节点js中,你会得到,
app.post('/addSlideShow', function(req, res) {
console.log(req.body); //Output=> like { searchid: 'Array of checked checkbox' }
console.log(req.body.searchid); // to get array of checked checkbox
});
答案 1 :(得分:0)
<input id="createSS" type="submit" value="Create Slide Show" class="btn btn-success pull-left" disabled/>
您的提交按钮已停用。最后删除disabled
属性。
答案 2 :(得分:0)
您正在使用event.preventDefault()
,它告诉浏览器不要在点击时执行该操作。删除该行,您的表单将被提交。我不是Node ninja,但你在req.body中的数据不会是html格式。查询$(“td”)是前端逻辑。您需要为每个复选框指定一个不同的名称,例如name="ch-{{$index}}"
(在角度ng-repeat中就是这样)。或者您应该通过ajax发送{searchid: searchIDs}
。