【发布时间】:2018-04-05 14:54:48
【问题描述】:
我正在玩 laravel 和数据表。 Here 是我想了解的带有过滤选项的表格。 基本上按照示例配置了路由和控制器,但无法通过 ajax 从下面的下拉列表中动态获取值。
<select class="form-control" id="asortment" name="asortment">
<option value="68">A</option>
<option value="5">B</option>
...
负责ajax通信的Javascript:
<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>
我的 API 控制器如下所示:
class APIController extends Controller
{
public function getProducts(Request $request)
{
$product = $request->input('product');
$fromDate = $request->input('fromDate');
$toDate = $request->input('toDate');
$asortment = $request->input('asortment');
$query = DB::select('exec test.dbo.Products @startDate = ?, @endDate = ?, @asortment = ?, @produkt = ?', [$fromDate, $toDate, $asortment, $product]);
return datatables($query)->make(true);
}
}
问题:Ajax 接受 3 个值(product、fromDate、toDate)但不接受选择形式的分类。
我需要一点帮助来解释为什么...:)
【问题讨论】:
-
将
$('input[name=asortment]').val();替换为$("#asortment").val();并试一试。 -
@RutvijKothari 它有效。在我尝试用 select 替换输入之前没有效果。你能简单解释一下为什么它现在是正确的吗?
-
对不起,我在答案中解释了。评论不是很好的解释方式。
标签: ajax laravel datatables