我正在Laravel中使用服务器端数据表(具体来说,Yajra)。
我有一条路由设置,可以拉出所有资产并以DataTable形式返回,但是我需要拉出school_id等于URL中的参数的所有资产。
所以我的应用程序应如下所示:
到目前为止,我在脚本中使用的是以下内容:
$(function() {
$('#assets-table').DataTable({
processing: true,
serverSide: true,
ajax: '/api/assets',
columns: [
{data: 'asset_tag', name: 'assets.asset_tag'},
{data: 'name', name: 'assets.name'},
]
});
});
在URL中获取该ID并将其传递给该ajax请求的最佳方法是什么?
答案 0 :(得分:1)
此答案将反映出我用来对所有文件进行结构化并且不将blade
文件与js
混合使用的方法。
在您的控制器中,您将拥有{school_id}
。您可以这样简单地将其传递到刀片服务器:
return view('...')->with([
'school_id' => $school_id
]);
创建一个简单的input
字段以能够获取数据。
<input type="hidden" data-fetch-route="{{ route('name_of_route', ['school_id' => $school_id]) }}" id="schoolFetch">
在.js
文件中,您可以拥有:
$(function() {
$('#assets-table').DataTable({
processing: true,
serverSide: true,
ajax: $("#schoolFetch").attr('data-fetch-route'),
columns: [
{data: 'asset_tag', name: 'assets.asset_tag'},
{data: 'name', name: 'assets.name'},
]
});
如您所见,您将拥有route('name_of_route', ['school_id' => $school_id])
,这意味着您将需要在路由name_of_route
上接受参数
如果您想做得更深入,更清洁,可以创建一个名为utilities.js
的文件,该文件将具有您可以在整个应用程序中使用的所有功能,例如:
window.getRoute = function($element, action){
return $element.attr('data-' + action + '-route');
}
和
ajax: $("#schoolFetch").attr('data-fetch-route'),
将变成
ajax: getRoute($("#schoolFetch"), 'fetch'),
答案 1 :(得分:0)
$(function() {
$('#assets-table').DataTable({
processing: true,
serverSide: true,
ajax: {{ route('name.your.route.here') }},
columns: [
{data: 'asset_tag', name: 'assets.asset_tag'},
{data: 'name', name: 'assets.name'},
]
});
});