Laravel Datatables 从 GET 变量获取数据
Laravel Datatables get data from GET variables
Laravel 5.5
我有一个搜索视图,用户可以在其中输入 text input
字段来搜索 table。请求转到 GET 变量到结果 blade.
在结果blade里面,有一个Laravelajaxtable。 https://datatables.yajrabox.com/
我不知道如何将 URL 中的 GET 变量传递给搜索 Laravel ajax 请求。
最终,我希望能够将 $_GET
lead_name、lead_phone 等传递给此 ajax 请求。我怎样才能做到这一点?
这是我的数据table页面底部的脚本:
<script>
$(function() {
$('.datatable').DataTable({
processing: true,
serverSide: true,
ajax: {
url: '{{ route('SearchResults') }}',
method: 'GET'
},
columns: [
{ data: 'lead_name', name: 'leads.lead_name' },
{ data: 'lead_merchant_id', name: 'leads.lead_merchant_id'},
{ data: 'lead_address_city', name: 'leads.lead_address_city' },
{ data: 'lead_address_state', name: 'leads.lead_address_state' },
{ data: 'accountstatus_description', name: 'accountstatus.accountstatus_description' },
{ data: 'firstlast_name', name: 'name' }
],
rowReorder: {
selector: 'td:nth-child(0)'
},
responsive: true
});
});
如果我 运行 在我的搜索结果路线上添加:
public function SearchResults(request $request) {
dd($request);
}
它不会return任何以前的 GET 数据。
请指定发送数据的method
。
<script>
$(function() {
$('.datatable').DataTable({
processing: true,
serverSide: true,
method: post,
ajax: '{{ route('SearchResults') }}',
columns: [
{ data: 'lead_name', name: 'leads.lead_name' },
{ data: 'lead_merchant_id', name: 'leads.lead_merchant_id'},
{ data: 'lead_address_city', name: 'leads.lead_address_city' },
{ data: 'lead_address_state', name: 'leads.lead_address_state' },
{ data: 'accountstatus_description', name: 'accountstatus.accountstatus_description' },
{ data: 'firstlast_name', name: 'name' }
],
rowReorder: {
selector: 'td:nth-child(0)'
},
responsive: true
});
});
无需通过GET方式发送,您可以通过以下方式轻松使用POST方式:
您的页面上应该有一个带有 POST 方法和唯一 ID
的表单
<form method="POST" id="search-form" role="form">
{{csrf_field()}}
<input type="text" name="lead_phone">
</form>
在您的页面上,编写此 jquery 代码,在您提交表单时运行此代码
$(document).ready(function(){
$('#search-form').on('submit', function(e) {
table.draw();
e.preventDefault();
});
});
然后为您的 DataTable 部分使用以下代码
$(function() {
var table = $('.datatable').DataTable({
processing: true,
serverSide: true,
ajax: {
url: '{{ route('SearchResults') }}',
type: "post",
data: function (d) {
d.lead_phone = $('input[name=visited]').val();
d._token = _token;
},
},
columns: [
{ data: 'lead_name', name: 'leads.lead_name' },
{ data: 'lead_merchant_id', name: 'leads.lead_merchant_id'},
{ data: 'lead_address_city', name: 'leads.lead_address_city' },
{ data: 'lead_address_state', name: 'leads.lead_address_state' },
{ data: 'accountstatus_description', name: 'accountstatus.accountstatus_description' },
{ data: 'firstlast_name', name: 'name' }
],
rowReorder: {
selector: 'td:nth-child(0)'
},
responsive: true
});
});
如果数据是通过Query String发送的,则不需要jquery代码和表格,只需在DataTable部分写下以下代码
$(function() {
var table = $('.datatable').DataTable({
processing: true,
serverSide: true,
ajax: {
url: '{{ route('SearchResults') }}',
type: "post",
data: function (d) {
d.lead_phone = '{{$_GET['lead_phone']}}';
d._token = '{{csrf_token()}}';
},
},
columns: [
{ data: 'lead_name', name: 'leads.lead_name' },
{ data: 'lead_merchant_id', name: 'leads.lead_merchant_id'},
{ data: 'lead_address_city', name: 'leads.lead_address_city' },
{ data: 'lead_address_state', name: 'leads.lead_address_state' },
{ data: 'accountstatus_description', name: 'accountstatus.accountstatus_description' },
{ data: 'firstlast_name', name: 'name' }
],
rowReorder: {
selector: 'td:nth-child(0)'
},
responsive: true
});
});
然后获取你发送给controller的数据
public function DataTable(Request $request)
{
$lead_phone = $request->get('lead_phone');
.
.
.
}
Laravel 5.5
我有一个搜索视图,用户可以在其中输入 text input
字段来搜索 table。请求转到 GET 变量到结果 blade.
在结果blade里面,有一个Laravelajaxtable。 https://datatables.yajrabox.com/
我不知道如何将 URL 中的 GET 变量传递给搜索 Laravel ajax 请求。
最终,我希望能够将 $_GET
lead_name、lead_phone 等传递给此 ajax 请求。我怎样才能做到这一点?
这是我的数据table页面底部的脚本:
<script>
$(function() {
$('.datatable').DataTable({
processing: true,
serverSide: true,
ajax: {
url: '{{ route('SearchResults') }}',
method: 'GET'
},
columns: [
{ data: 'lead_name', name: 'leads.lead_name' },
{ data: 'lead_merchant_id', name: 'leads.lead_merchant_id'},
{ data: 'lead_address_city', name: 'leads.lead_address_city' },
{ data: 'lead_address_state', name: 'leads.lead_address_state' },
{ data: 'accountstatus_description', name: 'accountstatus.accountstatus_description' },
{ data: 'firstlast_name', name: 'name' }
],
rowReorder: {
selector: 'td:nth-child(0)'
},
responsive: true
});
});
如果我 运行 在我的搜索结果路线上添加:
public function SearchResults(request $request) {
dd($request);
}
它不会return任何以前的 GET 数据。
请指定发送数据的method
。
<script>
$(function() {
$('.datatable').DataTable({
processing: true,
serverSide: true,
method: post,
ajax: '{{ route('SearchResults') }}',
columns: [
{ data: 'lead_name', name: 'leads.lead_name' },
{ data: 'lead_merchant_id', name: 'leads.lead_merchant_id'},
{ data: 'lead_address_city', name: 'leads.lead_address_city' },
{ data: 'lead_address_state', name: 'leads.lead_address_state' },
{ data: 'accountstatus_description', name: 'accountstatus.accountstatus_description' },
{ data: 'firstlast_name', name: 'name' }
],
rowReorder: {
selector: 'td:nth-child(0)'
},
responsive: true
});
});
无需通过GET方式发送,您可以通过以下方式轻松使用POST方式:
您的页面上应该有一个带有 POST 方法和唯一 ID
的表单<form method="POST" id="search-form" role="form">
{{csrf_field()}}
<input type="text" name="lead_phone">
</form>
在您的页面上,编写此 jquery 代码,在您提交表单时运行此代码
$(document).ready(function(){
$('#search-form').on('submit', function(e) {
table.draw();
e.preventDefault();
});
});
然后为您的 DataTable 部分使用以下代码
$(function() {
var table = $('.datatable').DataTable({
processing: true,
serverSide: true,
ajax: {
url: '{{ route('SearchResults') }}',
type: "post",
data: function (d) {
d.lead_phone = $('input[name=visited]').val();
d._token = _token;
},
},
columns: [
{ data: 'lead_name', name: 'leads.lead_name' },
{ data: 'lead_merchant_id', name: 'leads.lead_merchant_id'},
{ data: 'lead_address_city', name: 'leads.lead_address_city' },
{ data: 'lead_address_state', name: 'leads.lead_address_state' },
{ data: 'accountstatus_description', name: 'accountstatus.accountstatus_description' },
{ data: 'firstlast_name', name: 'name' }
],
rowReorder: {
selector: 'td:nth-child(0)'
},
responsive: true
});
});
如果数据是通过Query String发送的,则不需要jquery代码和表格,只需在DataTable部分写下以下代码
$(function() {
var table = $('.datatable').DataTable({
processing: true,
serverSide: true,
ajax: {
url: '{{ route('SearchResults') }}',
type: "post",
data: function (d) {
d.lead_phone = '{{$_GET['lead_phone']}}';
d._token = '{{csrf_token()}}';
},
},
columns: [
{ data: 'lead_name', name: 'leads.lead_name' },
{ data: 'lead_merchant_id', name: 'leads.lead_merchant_id'},
{ data: 'lead_address_city', name: 'leads.lead_address_city' },
{ data: 'lead_address_state', name: 'leads.lead_address_state' },
{ data: 'accountstatus_description', name: 'accountstatus.accountstatus_description' },
{ data: 'firstlast_name', name: 'name' }
],
rowReorder: {
selector: 'td:nth-child(0)'
},
responsive: true
});
});
然后获取你发送给controller的数据
public function DataTable(Request $request)
{
$lead_phone = $request->get('lead_phone');
.
.
.
}