如何将值从表单传递到数据表

时间:2017-10-24 17:40:12

标签: ajax laravel datatables

我正在玩laravel和datatables。 Here是具有我想要理解的形式的过滤选项的表。 基本配置的路由和控制器,如示例中所示,但不能通过ajax从下面的下拉列表中动态获取值。

oracle.jdbc.mapDateToTimestamp=false

负责ajax通信的Javascript:

<select class="form-control" id="asortment" name="asortment">
<option value="68">A</option>
<option value="5">B</option>
...

我的API控制器如下所示:

<script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.16/js/jquery.dataTables.js"></script>
<script>
    $(document).ready( function () {
        $('#datatable').DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": {
                url: "{{ route('api.products.index') }}",
                data: function (d) {
                    d.product = $('input[name=product]').val();
                    d.fromDate = $('input[name=fromDate]').val();
                    d.toDate = $('input[name=toDate]').val();
                    d.asortment = $('input[name=asortment]').val();
                },
            },
            "columns": [
                { "data": "Name", },
                { "data": "Type" },
                { "data": "Asortment" },
                { "data": "Margin" }
            ]
        });
    });

    $('#search-form').on('submit', function(e) {
        oTable.draw();
        e.preventDefault();
    });
</script>

问题:Ajax需要3个值(product,fromDate,toDate),但不接受asortment,这是选择形式。

我需要一些帮助,为什么......:)

1 个答案:

答案 0 :(得分:1)

而不是使用$('input[name=asortment]').val();将其更改为$("#asortment").val();(纯jQuery方式!)。

$( '输入[名称= YOUT_NAME]')VAL();无法使用Radio Button / Select / Checbox。

  

val()允许您传递元素值数组。这很有用   当处理一个jQuery对象时,包含像,和s之类的元素   。在这种情况下,输入和选项具有值   匹配数组中的一个元素将被选中或选中   而那些具有与其中一个元素不匹配的值的那些   数组将取消选中或取消选中,具体取决于类型。在   s的情况是无线电组的一部分和   s,将取消选择任何先前选择的元素。

     

使用此方法设置值(或使用原生值属性)   不会导致更改事件的发送。 出于这个原因,   相关的事件处理程序将不会被执行。如果你想执行   它们,您应该在设置值后调用 .trigger(“更改”)

jQuery的documentation中提到了这一点。