Node.js Чекбокс Итерация

0

Как выполнить итерацию с помощью отмеченных флажков без жесткого кодирования и проверки каждого окна по одному. Вроде как эта ссылка, но с Node.js, а не с JavaScript. Итерацию все флажок в JavaScript:

Поэтому я пытаюсь отобразить содержимое моей базы данных (используя MySQL), но я не хочу жестко кодировать "req.body.checkboxName" для каждого флажка, если новый столбец добавляется в таблицу (флажки каждый из столбцов в данной таблице). Поэтому мне нужно найти способ, который будет проходить через каждый флажок на веб-странице и посмотреть, проверено ли оно. Если это так, мы добавим их вместе в строку и запрос для этих столбцов. Мой код ниже для метода POST Node.js (после того, как он отправлен после того, как отмечены флажки), а другой - мой код Pug/Jade (использующий JavaScript-шаблон, извините, это не простой html).

Если вы сбиты с толку, как запускается файл Pug/Jade, другой метод GET отображает этот файл Pug/Jade с именами столбцов; что метод GET в основном является методом POST ниже до строки "//Need help"

Node.js

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);
        }
    });


    //Need help, the next 5 or so lines are non-working ~psuedocode
    var checkedList = '';    
    req.body.CHECKBOXES.each(function(index, element){
        if(CHECKBOX.ischecked(){
            checkedList += CHECKBOX.name() + ', '
        }
    });


    var mysqlRequest =  'SELECT ' + checkedList + ' FROM ' + tableName;
    connection.query(mysqlRequest, function(err, results, fields) {
        if(err){
            throw err;
        }
        res.render('webPage', {'columnstodisplay': results});
    });

});

Мопс /Jade

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')

Заранее спасибо!

Теги:
checkbox
pug

1 ответ

0
Лучший ответ

Извините за ожидание месяца, чтобы ответить на мой собственный вопрос. Ниже приведен код, который у меня есть. Фактически, что я сделал, когда нажала кнопка отправки, она называлась функцией 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});
    });

});

Мопс /Jade

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();
                }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню