很抱歉等了一个月才回答我自己的问题。下面是我的代码。基本上,我所做的是当单击submit按钮时,它调用了一个JavaScript函数,查看选中了哪些复选框,并创建了两个隐藏元素;一个复选框数组和要放置在MySQL查询中的字符串(查询要求选中的列/复选框)。
app.post('/GetTables', function(req, res){
var columnsRequest = 'DESCRIBE ' + tableName;
var columnsList = [];
connection.query(columnsRequest, function(err, results, fields) {
if(err){
throw err;
}
for (var index in results) {
console.log(results[index].Field);
columnsList.push(results[index].Field);
}
});
//changed the line below****
var mysqlRequest = 'SELECT ' + req.body.checkboxNames + ' FROM ' + tableName;
connection.query(mysqlRequest, function(err, results, fields) {
if(err){
throw err;
}
//changed the line below********
res.render('webPageName', {'columns': columnsList, 'rows': results, 'fields': fields, 'recheckboxes':req.body.checkboxArray});
});
});
哈巴狗/翡翠
form(method = 'POST', action = '/GetTables', id = 'tableform')
fieldset
each item in columns
//this loop sets up the checkboxes for each of the columns
p
input(type="checkbox", name=item, value=item)
span #{item}
br
input(type ='submit', value ='Submit', onclick="sendCBs(document.thisForm, '/gettables')")
script.
function sendCBs(form, path, method) {
var cbNames = '';
var cbArray = [];
var count = 0;
for (var i = 0; i < form.elements.length; i++) {
if (form.elements[i].type == 'checkbox') {
if (form.elements[i].checked == true) {
cbNames += form.elements[i].value + ', ';
cbArray.push(form.elements[i].value);
count++;
}
}
}
if(count > 0){
cbNames = cbNames.replace(/,\s*$/, ""); //remove the last comma if 1 or more checkboxes selected
}
else{
return;
}
method = method || "POST"; //if not specified, method will be post
var inputform = document.createElement("form");
inputform.setAttribute("method", method);
inputform.setAttribute("action", path);
var hiddenField1 = createHiddenInput("checkboxNames", cbNames);
var hiddenField2 = createHiddenInput("checkboxArray", cbArray);
inputform.appendChild(hiddenField1);
inputform.appendChild(hiddenField2);
document.body.appendChild(inputform);
inputform.submit();
}