Laravel:使用 url 代替 javascript 中的路由

Laravel: use an url instead route in javascript

在 Laravel 5.4 中,我需要在 javascript 文件中使用 url 代替路由。

现在我有一个包含以下代码的 blade 文件:

@section('after-scripts')
    {{ Html::script("https://cdn.datatables.net/v/bs/dt-1.10.15/datatables.min.js") }}
<script>
    $(function () {
        $('#users-table').DataTable({
            processing: true,
            serverSide: true,
            ajax: {
                url: '{{ route("admin.access.user.get") }}',
                type: 'post',
                data: {status: 1, trashed: false}
            },
            columns: [
                {data: 'id', name: '{{config('access.users_table')}}.id'},
                {data: 'first_name', name: '{{config('access.users_table')}}.first_name'},                ],
            order: [[0, "asc"]],
            searchDelay: 100
        });
    });
</script>

但我想去掉 blade 这个并将其保存为我的 js 资产中的普通 .js 文件。我应该如何处理 route()config() 等 blade 助手?

您可以在导入脚本之前使用 config 和 route 的输出初始化 blade 文件中的 JavaScript 变量。

在 Blade 模板文件中

@section('after-scripts')
    {{ Html::script("https://cdn.datatables.net/v/bs/dt-1.10.15/datatables.min.js") }}
    <script>
        var accessurl = '{{ route("admin.access.user.get") }}';
        var config = '{{config('access.users_table')}}';
    </script>
    <script src="{{asset('path/to/jsfile.js')}}" type="text/javascript"></script>
@endsection

在JavaScript文件中

$(function () {
    $('#users-table').DataTable({
        processing: true,
        serverSide: true,
        ajax: {
            url: accessurl,
            type: 'post',
            data: {status: 1, trashed: false}
        },
        columns: [
            {data: 'id', name: config + '.id'},
            {data: 'first_name', name: config +'.first_name'},],
        order: [[0, "asc"]],
        searchDelay: 100
    });
});