我有一个带有单个数据表的简单Laravel应用程序,该数据表在服务器端处理数据并将其提供给页面。它使用一个软件包yajra/laravel-datatables。在本地测试时效果很好(php artisan服务),但是在托管应用程序时,页面加载时出现错误:
DataTables警告:表ID =程序表-Ajax错误。有关此错误的更多信息,请参阅http://datatables.net/tn/7
,我的请求在开发工具中返回404。我认为这个问题会在路由中产生,因为服务器托管在IIS中,并且具有多个重写规则-尽管禁用它们并没有任何效果。
我的Laravel路线如下:
Route::get('/serverSide', [
'as' => 'serverSide',
'uses' => function () {
$model = \App\Degree::query();
return DataTables::eloquent($model)->toJson();
}
]);
我的DataTable设置是:
$('#program-table').DataTable({
processing: true,
serverSide: true,
ajax: "{{ route('serverSide') }}",
columns: [
{
"className": 'details-control',
"orderable": false,
"data": null,
"width": '5%',
"searchable": false,
"defaultContent": ''
},
{ data: 'cip', width: '10%'},
{ data: 'cip_title' },
{ data: 'item_name' },
{ data: 'degree_name_list' },
{ data: 't_state_code_list', width: '7%' },
{ data: 'p_state_code_list', width: '7%' },
{ data: 's_state_code_list', width: '7%' }
],
pageLength: 25,
searching: true,
paging: true,
"order": [[ 1, "asc" ]]
});
如果有人对类似问题或解决方案有任何经验,我很高兴知道!非常感谢
答案 0 :(得分:0)
对于IIS,URL可能太长(IIS在URL长度上有字节限制)。如果您在网站的IIS日志中查找,则应该看到该请求的404.15或404.14。
如果在浏览器的DEV工具中打开“网络”标签,则在打开数据表时检查GET请求的长度。
IIS的默认限制是4kb IIRC。计算出您需要的长度。我的限制是10KB,10240字节。
在IIS中:
答案 1 :(得分:0)
我有同样的问题。通过使用“发布”而不是“获取”发出请求已解决了该问题。您可以使用以下代码进行发布请求。
$('#users-table').DataTable({
processing: true,
serverSide: true,
ajax: {
url: 'http://datatables.yajrabox.com/eloquent/column-search-data',
method: 'POST'
}
});
来源:https://github.com/yajra/laravel-datatables/issues/74#issuecomment-111974122