私はlaravelとdatatablesで遊んでいます。 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つの値をとる(製品、fromDateから、toDateまで)を選択しますが、選択された形式の控除は受け付けません。
私が代わりに$("#asortment").val();
から$('input[name=asortment]').val();
変更、それを(ピュアjQueryの道を!)使用の理由は... :)
'$( 'input [name = asortment]')をval();' $( "#asortment").val();で置き換えて試してください。 –
@RutvijKothariそれは動作します。私は前に入力を選択し、効果なしで置き換えようとしました。あなたはすぐにそれが今正しい理由をちょっと説明できますか? –
申し訳ありませんが、答えで説明しました。コメントはそれを説明する良い方法ではありません。 –