我正在玩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,这是选择形式。
我需要一些帮助,为什么......:)
答案 0 :(得分:1)
而不是使用$('input[name=asortment]').val();
将其更改为$("#asortment").val();
(纯jQuery方式!)。
$( '输入[名称= YOUT_NAME]')VAL();无法使用Radio Button / Select / Checbox。
val()允许您传递元素值数组。这很有用 当处理一个jQuery对象时,包含像,和s之类的元素 。在这种情况下,输入和选项具有值 匹配数组中的一个元素将被选中或选中 而那些具有与其中一个元素不匹配的值的那些 数组将取消选中或取消选中,具体取决于类型。在 s的情况是无线电组的一部分和 s,将取消选择任何先前选择的元素。
使用此方法设置值(或使用原生值属性) 不会导致更改事件的发送。 出于这个原因, 相关的事件处理程序将不会被执行。如果你想执行 它们,您应该在设置值后调用 .trigger(“更改”)。
jQuery的documentation中提到了这一点。