DataTables 在本地工作,托管时出现 404 和 Ajax 错误
Posted
技术标签:
【中文标题】DataTables 在本地工作,托管时出现 404 和 Ajax 错误【英文标题】:DataTables works locally, 404 and Ajax error when hosted 【发布时间】:2018-12-30 23:11:25 【问题描述】:我有一个简单的 Laravel 应用程序,它带有一个数据表,可以在服务器端处理数据并将其提供给页面。它使用一个包,yajra/laravel-datatables。这在本地测试时工作正常(php artisan serve),但是当托管应用程序时,页面加载时出现错误:
DataTables 警告:table id=program-table - 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" ]]
);
如果有人对类似问题或解决方案有任何经验,我很乐意知道!非常感谢
【问题讨论】:
【参考方案1】:对于 IIS,URL 可能太长(IIS 对 URL 长度有字节限制)。如果您查看站点的 IIS 日志,您应该会看到请求的 404.15 或 404.14。
如果您在浏览器的 DEV 工具中打开网络选项卡,请在打开数据表时检查 GET 请求的长度。
IIS 默认限制为 4kb IIRC。计算出你需要的长度。我的限制是 10KB,10240 字节。
在 IIS 中:
-
转到您的网站:
打开请求过滤 -> 编辑功能设置(右侧窗格中的菜单)。
将最大 URL 长度和最大查询字符串更改为所需的值(我的是 10240)。
重新启动站点。
【讨论】:
我已经被困了好几天了。您的解决方案节省了我的时间。谢谢【参考方案2】:我遇到了同样的问题。通过使用“post”而不是“get”来提出请求可以解决这个问题。您可以使用以下代码发出 post 请求。
$('#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
【讨论】:
以上是关于DataTables 在本地工作,托管时出现 404 和 Ajax 错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 中的 Docker 中托管 Kafka 时删除主题时出现异常
iOS:在应用内购买中上传托管内容时出现问题 (ITMS-4200)