【问题标题】:Send DataTable as POST data将 DataTable 作为 POST 数据发送
【发布时间】:2015-11-09 07:00:07
【问题描述】:

我正在使用 laravel 和 dataTables。这是我对 dataTables 的看法,它可以正常工作,并且每分页限制表 12 行。

@foreach($products as $result)
    <tr class="even pointer">
    <input name="id{{ $idx }}" value="{{ $result->id }}" type="hidden">
        <td class="a-center "><input value="{{ $result->qtyorder }}" name="qty{{ $idx }}" type="text"></td>
        <td class=" ">{{ $result->item }}</td>
        <td class=" "><input value="{{ $result->discount }}" name="price{{ $idx }}" type="text"></td>
    </tr>
    <?php $idx++; ?>
@endforeach

问题是当我点击提交时,它只发送 12 个数据,而不是在第 2、3、... 页发送数据 当我在第 2 页旁边尝试并提交时,仅发送了第 2 页的数据..

如何发送所有数据?

【问题讨论】:

    标签: php laravel datatables


    【解决方案1】:

    为了获得最佳实践,请将表格包装在一个表单中,并将您想要发布但不向用户显示的数据隐藏在输入中

    <form method="post" action="">
    <!-- your table -->
    <input type="hidden" name="name" value="VALUE/>
    <input type="hidden" name="name1" value="VALUE1/>
    <input type="hidden" name="name2" value="VALUE2/>
    <button type="submit">Post</button>
    </form>
    

    另一种方法,简单但不是一个好的做法是使用 JQuery / Javascript
    在表格上运行并获取 html(text) 属性。例如。

    var columns = [
            'cl001',
            'cl002',
            'cl003'
        ];
    
     var tableObj = $('#tableID tbody tr').map(function (i) {
            var row = {};
            $(this).find('td').each(function (i) {
                var rowID = columns[i];
                row[rowID] = $(this).text();
            });
            return row;
        }).get();
    
    
    $.post( "ACTIONURL", { data: tableObj })
    .done(function( data ) {
    console.log( data );
    });
    

    【讨论】:

    • 如果行数取决于数据库中的产品数据怎么办?
    • 如果您真的想将数据库中的数据显示到 html 中,然后再提交回后端程序,您只需将所有行查询到表中并尝试上述解决方案。
    猜你喜欢
    • 1970-01-01
    • 2015-03-16
    • 2011-08-18
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    相关资源
    最近更新 更多