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 错误的主要内容,如果未能解决你的问题,请参考以下文章

仅在托管应用程序时出现错误,但在我的本地主机中没有

上传到托管 CPANEL 时出现 PHP 错误

在 Windows 中的 Docker 中托管 Kafka 时删除主题时出现异常

iOS:在应用内购买中上传托管内容时出现问题 (ITMS-4200)

Wordpress 输入地址时出现 404 Not Found 错误

使用 Windows 服务中托管的 WCF 服务时出现 HTTP 获取错误