如何即使不将其嵌入到Ajax中也获得Laravel URL参数的值

时间:2018-08-15 08:58:58

标签: php ajax laravel laravel-5

我正在使用Laravel 5.6,PHP 7.1,XAMPP。我有一个URL,其中包含一个控制器的值,并且之前已定义。 我的问题是,如何在不传递值的情况下获取laravel URL中的最后一个值。我下面的代码也将显示该问题。

这是我的Ajax:

$(document).ready(function() { 
    $('#student_table').DataTable({
        "processing": true,
        "serverSide": true,
        "ajax": "{{ route('leads.getdata') }}",
        "columns":[
            { "data": "group_id" },
            { "data": "customer_id" },
            { "data": "customer_id" },
            { "data": "action", orderable:false, searchable: false},
            { "data":"checkbox", orderable:false, searchable:false}
        ]
    });

我的路线:

Route::get('leads/getdata', 'Controller@getdata')->name('leads.getdata');

Controller.php

function getdata(Request $request)
{
    //$id = $request->input('id');
    $students = GroupCustomer::select('id', 'name', 'address')->where('user_id', '=', $id);
    return Datatables::of($students)
        ->addColumn('action', function($student){
            return '<a href="/customers/'.$student->id.'" class="btn btn-xs btn-primary eye" id="'.$student->id.'"><i class="glyphicon glyphicon-eye-open"></i></a><a href="#" class="btn btn-xs btn-danger delete" id="'.$student->id.'"><i class="glyphicon glyphicon-remove"></i></a>';
        })
        ->addColumn('checkbox', '<input type="checkbox" name="student_checkbox[]" class="student_checkbox" value="{{$id}}" />')
        ->rawColumns(['checkbox','action'])
        ->make(true);
}

当前URL为:http://localhost:8000/leads/6,因为我需要获取'6'值并将其传递给查询以获取该用户的名称,地址。目前,它在没有“ where”语句的情况下工作。但是,我只想显示user_id ='6'的名称和地址。

有没有一种方法可以在不更改Ajax和route的情况下获得“ 6”值?

2 个答案:

答案 0 :(得分:1)

将路线更改为:

Route::get('leads/{id}', 'Controller@getdata')->name('leads.getdata');

将控制器更改为:

function getdata(Request $request, $id) {
    //$id = $request->input('id');

    $students = GroupCustomer::select('id', 'name', 'address')->where('user_id', '=', $id)->get();
    return Datatables::of($students)
        ->addColumn('action', function($student){
            return '<a href="/customers/'.$student->id.'" class="btn btn-xs btn-primary eye" id="'.$student->id.'"><i class="glyphicon glyphicon-eye-open"></i></a><a href="#" class="btn btn-xs btn-danger delete" id="'.$student->id.'"><i class="glyphicon glyphicon-remove"></i></a>';
        })
        ->addColumn('checkbox', '<input type="checkbox" name="student_checkbox[]" class="student_checkbox" value="{{$id}}" />')
        ->rawColumns(['checkbox','action'])
        ->make(true);
}

我认为如果不触摸ajax或路由就无法实现您想要的东西。

答案 1 :(得分:0)

问题是通过绑定数据解决的,实际上问题出在绑定数据上。唐。不能很好地工作,所以一旦我解决了将其绑定好的问题。

这是修复DOM问题后的我的Ajax代码:

 var id = document.getElementById("customer_id").value;

                       $('#student_table').DataTable({

                           "processing": true,
                           "serverSide": true,
                           ajax: {
                               url: "{!! route('leads.getdata') !!}",
                               type: "GET",
                               data: {id, id},
                               dataType: "JSON"
                           },
                           "columns":[
                               { "data": "group_id" },
                               { "data": "customer_id" },
                               { "data": "customer_id" },
                               { "data": "action", orderable:false, searchable: false},
                               { "data":"checkbox", orderable:false, searchable:false}
                           ]
                       });

谢谢