使用Node和Express将多个选定的ID从表发送到路由

时间:2016-02-15 13:06:33

标签: mysql node.js express

背景故事:

嗨!我是JavaScript和Node的完全菜鸟,所以我可能会在我脑海中。

我已连接到一个数据库,其中包含有关该事件的问题的事件。用户可以回答问题并将答案记录到数据库中。

我使用Node,Express和MySQL通过路由从数据库中获取数据。然后使用“forEach”将问题显示在表格中。

我也在使用“tabletools”(www.tabletools.net)来排序和搜索显示的数据。

案例:

我正在使用“tabletools”尝试使用“select multiple rows”从所选行中获取Question_ID。我目前不知道如何实现这一目标,但我正在尝试这种方法:

$('#fbody tbody').on( 'click', 'tr', function () {
    $(this).toggleClass('selected');
} );

$('#generate').click( function () {

     alert(table.rows('.selected').data());
} );

“#generate”是与该表关联的按钮的ID。我目前只是试图“提醒”结果以查看它是否有效......

我想访问Table Row-tag中的属性“value”。我不想访问Table Data-tag中的文本。

表格如下:

<table id="fbody" class="table table-striped">
               <div id="controlPanel"><h4><small>Export to: </small></h4></div>
               <button id="generate">Generate</button>
                <thead>
                   <% data2.forEach(function (event){ %>

                   <th><%= event.name %></th>
                   <th><%= event.location %></th>
                    <% }); %>
                </thead>
                <% data.forEach(function (question) { %>

                    <tr id="answer<%= question.course_module_id %>" value="<%= question.course_module_id %>">
                        <td><a href="/answers/<%= question.course_module_id %>?type=<%= question.question_type %>"><%= question.name %></a></td>
                        <td><%= question.location %></td>
                    </tr>

                    <% }); %>
            </table>

对不起,如果它看起来有点乱......

TL; DR:

我希望能够在表的TR标签内访问“value”,因为它包含question_ID,因此我可以将多个Question_ID推送到新路由,以便我可以使用SQL Query发送它们。 ..

注意:course_module_id与我稍后在SQL中加入的question_id相同。

更新

我现在设法通过此代码控制日志所有ID:

var arr = [];
var i = 0;
$(document).ready(function(){
    $("#generate").click(function(){
       $(".selected").each(function(i, obj){
           arr[i++] = $(this).data('value');
       });
       $.each(arr, function(index, val) {
           console.log(val);
       });
    });
});

现在剩下的部分是将这些值发送到一条路线,知道怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用post方法发送并在表格中插入表单,如下所示:

<强> HTML:

  <form id="send">
    <table id="fbody" class="table table-striped">
        <div id="controlPanel">
            <h4><small>Export to: </small></h4></div>
        <button id="generate">Generate</button>
        <thead>
            <% data2.forEach(function (event){ %>

                <th>
                    <%= event.name %>
                </th>
                <th>
                    <%= event.location %>
                </th>
                <% }); %>
        </thead>
        <% data.forEach(function (question) { %>

            <tr id="answer" value="<%= question.course_module_id %>">
                <td>
                    <a href="/answers/<%= question.course_module_id %>?type=<%= question.question_type %>">
                        <%= question.name %>
                    </a>
                </td>
                <td>
                    <%= question.location %>
                </td>
            </tr>

            <% }); %>
    </table>

    <button onclick="sendValues();">Send</button>


</form>

<强> JS:

function sendValues() {
    var values = [],
        value = {};
    value.id = '';

    $('tr[id="answer"]').each(function(key, val) {
        value.id = val.value;
        values[key] = value;
    });

    $.ajax({
        type: 'POST',
        data: JSON.stringify(values),
        cache: false,
        contentType: 'application/json',
        url: '/send',
        success: function(ret) {
            if (ret == true)
                alert("Ok");
            else {
                alert("Not ok");
            }
        }
    });
}

在这里,使用Jquery,我们将所有 tr 进行交互。因为你只选择了tr,你也可以用Jquery来验证它,在这种情况下取​​决于输入的methodoly。然后在发送到节点之前创建具有所选值的json和数组。

<强> Node.js的

app.post('/send', function(req, res) {
    var values = req.body;

    values.forEach(function(entry) {
        console.log(entry.id); // The id will show here
    });
    res.send(true);
});

Node通过post方法获取值并进行交互。对于你的情况,尝试这样做并提出疑问。