jquery datatables Ajax-Error / http://datatables.net/tn/7

Posted

技术标签:

【中文标题】jquery datatables Ajax-Error / http://datatables.net/tn/7【英文标题】: 【发布时间】:2015-05-05 14:55:14 【问题描述】:

请看下面我的问题:

我在我的 MVC-Web-Applikation 中使用 jquery 数据表。当我只显示 8 列时,一切正常。但是再增加 1 列,我得到了 ajax-error-message,见标题。

控制器工作正常,因为 8 列工作正常。这是我的视图代码:

<script type="text/javascript">
    $(document).ready(function () 
        var table = $('#example').DataTable(
            "processing": true,
            "serverSide": true,
            "ajax": "@Url.Action("List", "DFS_Akustik")",
            "columns": [
                 "data": "ID" ,
                 "data": "MessID" ,
                 "data": "KL_ID" ,
                 "data": "MP_ID" ,
                 "data": "LwLin50ss" ,
                 "data": "LwLin63ss" ,
                 "data": "LwLin80ss" ,
                 "data": "LwLin100ss" ,
                // "data": "LwLin125ss" ,
            ],
        );
    );
</script>

你可以认为最后一列没有激活,那么:

http://ziehl-abegg.com/files/work.jpg

当我删除最后一列的 // 时,然后:

http://ziehl-abegg.com/files/work_not.jpg

我该如何解决这个问题?请帮帮我...我在寻找解决方案,从星期一开始,一整天!

谢谢。

问候 贝吉塔_77

【问题讨论】:

你的服务器返回了什么错误?第二张图片中的错误信息literally tells you how to figure out what's wrong. 另外,你能帮我找出"ajax": "@Url.Action("List", "DFS_Akustik")"在浏览器中的呈现方式吗? 请显示 html 数据表不喜欢最后一列的内容。名称正确吗?你能在 Firebug 中看到 json 响应吗? 【参考方案1】:

我有它,我的朋友们!!!!!!!!!!!!!!!!!!!!!!!! 非常好:-)

解决方案如下:

$(document).ready(function() 
    $('#example').dataTable( 
        "processing": true,
        "serverSide": true,
        "ajax": 
            "url": "scripts/post.php",
            "type": "POST"
        ,
        "columns": [
             "data": "first_name" ,
             "data": "last_name" ,
             "data": "position" ,
             "data": "office" ,
             "data": "start_date" ,
             "data": "salary" 
        ]
     );
 );

我只需要编辑“ajax”。当您使用“类型”“POST”时,它可以工作。

非常感谢。

问候 贝吉塔_77

【讨论】:

遇到了完全相同的问题。知道为什么这可以解决问题吗? 我们也遇到了这个问题。据我所知,这是因为生成的回调超出了 GET 请求的 2048 个字符限制。这不是标准的硬性限制,但许多 Web 服务器强制执行。 完美..:) 你节省了很多时间。即使我解决了小问题,我也总是喜欢这种感觉。【参考方案2】:

早上好。这里是 HTML / 表头:

<div style="width: auto; height: 750px; overflow-x: auto; overflow-y: auto;">
    <table id="example" class="table display" cellspacing="0">
        <thead>
            <tr>
                <th>ID</th>
                <th>MessID</th>
                <th>KL_ID</th>
                <th>MP_ID</th>
                <th>LwLin50ss</th>
                <th>LwLin63ss</th>
                <th>LwLin80ss</th>
                <th>LwLin100ss</th>
                @*<th>LwLin125ss</th>*@
            </tr>
        </thead>
    </table>
</div>

服务端结果不错,看:

http://ziehl-abegg.com/files/ServerSide.jpg

@Sippy。我不明白我们的第二个问题。

名称都正确,请看第三张图片/链接。 这是来自控制器的方法“列表”:

public JsonResult List([ModelBinder(typeof(DataTablesBinder))] 
IDataTablesRequest requestModel)

List<View_DFS_Akustik> myOriginalDataSet = dbman.View_DFS_Akustik.ToList();
List<View_DFS_Akustik> myFilteredData = dbman.Set<View_DFS_Akustik>().FullTextSearch(requestModel.Search.Value).ToList();

//Apply filter to your dataset based only on the columns that actually have a search value.
foreach (var column in requestModel.Columns.GetFilteredColumns())

    string query = column.Data + ".Contains(\"" + column.Search.Value + "\")";
    myFilteredData = myFilteredData.Where(query).ToList();


//Set your dataset on the same order as requested from client-side either directly on your SQL code or easily
//into any type or enumeration.
bool isSorted = false;
foreach (var column in requestModel.Columns.GetSortedColumns())

    if (!isSorted)
    
        // Apply first sort.
        if (column.SortDirection == Column.OrderDirection.Ascendant)
            myFilteredData = myFilteredData.OrderBy(column.Data).ToList();
        else
            myFilteredData = myFilteredData.OrderBy(column.Data + " descending").ToList();

        isSorted = true;
    
    else
    
        if (column.SortDirection == Column.OrderDirection.Ascendant)
            myFilteredData = myFilteredData.OrderBy(column.Data).ToList();
        else
            myFilteredData = myFilteredData.OrderBy(column.Data + " descending").ToList();
    


var paged = myFilteredData.Skip(requestModel.Start).Take(requestModel.Length);
return Json(new DataTablesResponse(requestModel.Draw, paged, myFilteredData.Count(), myOriginalDataSet.Count()), JsonRequestBehavior.AllowGet);

谢谢。贝吉塔_77

【讨论】:

以上是关于jquery datatables Ajax-Error / http://datatables.net/tn/7的主要内容,如果未能解决你的问题,请参考以下文章

找不到文件'dataTables/jquery.dataTables' Rails 4

001_ jQuery的表格插件dataTable详解

jquery datatable如何动态分页

JQuery插件之Jquery.datatables.js用法及api

jquery datatable怎么做到筛选

Jquery DataTable基本使用