我正在使用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”值?
答案 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}
]
});
谢谢