【问题标题】:datatables.net ajax error - http://datatables.net/tn/7datatables.net ajax 错误 - http://datatables.net/tn/7
【发布时间】:2016-05-12 14:55:58
【问题描述】:

我正在尝试使用基于此示例https://www.datatables.net/examples/ajax/objects.html 的 JSON 响应将数据添加到 datatables.net 数据表的示例。

我正在使用 AJAX 调用从数据库中获取 JSON 响应。

我正在获取数据,然后按照以下代码使用 NewtonSoft JSON.Net 将数据表转换为 JSON 数组

string jsonResult = null;
jsonResult = Newtonsoft.Json.JsonConvert.SerializeObject(dt);
jsonResult = jsonResult.Replace("[{", "{\"data\" :[{").Replace("}]", "}]}");
return jsonResult;

根据下一个代码 sn-p,从一个单独的 javascript 文件中的 AJAX 调用成功调用它

 $.ajax({
            type: "POST",
            url: "TeamChecks.aspx/GetDataTables",
            data: JSON.stringify(params),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                console.log(data.d);
                populateTable(data.d, tableId);

            },
            error: function (data) {
                console.log(data);
            }
        }

然后将返回的值传递给一个函数,该函数应该根据下一组代码将数据相应地格式化输入数据表

function populateTable(json, tableId) {
        try {
            var table = $('#table_' + tableId).DataTable({
                "processing": true,
                "serverSide": true,
                "ajax": json,
                "columns:": [

                    { "data": "CaseHandlerStaffNumber" },
                    { "data": "RiskProfileText" },
                    { "data": "AssignedCheckerStaffNumber" },
                    { "data": "FeedbackUserStaffNumber" },
                    { "data": "ComplaintRef" },
                    { "data": "ChildComplaintRef" },
                    { "data": "CaseTypeText" },
                    { "data": "CheckGrade" }
                ]
            });
        } catch (e) {

        }
    }

我遇到的问题与jquery datatables Ajax-Error / http://datatables.net/tn/7 这里的问题类似,但是,我已经尝试过这个用户解决方案并且遇到了同样的问题。

我已按照https://www.datatables.net/manual/tech-notes/7 此处详述的所有推荐步骤进行操作,但没有发现与此相关的回复有任何问题。

如果有人能帮助我解决这个问题,我将不胜感激,因为我目前无法解决这个问题

谢谢

西蒙

【问题讨论】:

标签: javascript jquery json ajax datatables


【解决方案1】:

基本上,当您调用 ajax 来获取数据但随后将 ajax 添加到数据表定义时,您就是在自相矛盾。

设置网络方法;请注意,当您这样做时,数据会被序列化两次,一次由您,一次由脚本服务模块。

[WebMethod]
public string getTheData(String params){
    SomeDataClass dt = getthedata();
    return Newtonsoft.Json.JsonConvert.SerializeObject(dt);
} 

现在是 ajax:

$(document).ready(function(){
    $.ajax({
        type: "POST",
        url: "TeamChecks.aspx/GetDataTables",
        data: JSON.stringify(params),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            // jquery did the first deserialization
            // here is where the second deserization happens.
            var data = JSON.parse(reponse.d);

            populateTable(data, tableId);

        },
        error: function (data) {
            console.log(data);
        }
    }
 });

然后你的函数

function populateTable(json, tableId) {

        var table = $('#table_' + tableId).DataTable({
             // in this layout DataTables is expecting a straight array of objects or array of arrays depending on how you are sending the data back
            "data": json,
            "columns:": [
                { "data": "CaseHandlerStaffNumber" },
                { "data": "RiskProfileText" },
                { "data": "AssignedCheckerStaffNumber" },
                { "data": "FeedbackUserStaffNumber" },
                { "data": "ComplaintRef" },
                { "data": "ChildComplaintRef" },
                { "data": "CaseTypeText" },
                { "data": "CheckGrade" }
            ]
        });

  }

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多