我有一个点网aspx页,其中的表设置为使用AJAX调用从Web方法获取数据的JQuery DataTable(https://datatables.net/)。数据作为JSON对象返回。

每个部分的机制似乎都正常工作。调用Web方法并返回一个有效的JSON对象(根据JSONLint),我可以在AJAX调用的“成功”回调函数中访问和处理返回的数据。

但是,数据表显示在页面上,没有任何正文行,只有页眉和页脚。

.aspx页面的HTML部分

<div id="divIssueDetailsTable">
    <table id="tblIssueDetails" class="table">
        <thead>
            <tr>
                <th>Team</th>
                <th>Score</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>Team</th>
                <th>Score</th>
            </tr>
        </tfoot>
        <tbody>
        </tbody>
    </table>
</div>


创建数据表的Javascript函数(包括成功回调函数内部的测试代码,以测试返回的JSON对象)

$('#tblIssueDetails').DataTable(
    {
        "processing": true,
        "serverSide": true,
        "cache": false,
        "destroy": true,
        "ajax":
            {
                type: "POST",
                url: "WebServices/WSGetData.asmx/ReturnIssues",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                data: "",
                success: function (results) {
                    toastr["success"]("AJAX call succeeded.", "Success:");
                    var objJSON = $.parseJSON(results.d);
                    $(objJSON.data).each(function () {
                        alert(this.Age);
                    });
                },
                error: function(e) {
                    toastr["error"]("There has been a problem retrieving the information from the database. " + e.responseText, "Error:");
                },
                complete: function () {
                    $('#divIssueDetailsTable').show();
                }
            }
    });


Web方法返回的内容(测试数据)


  d:“ {”数据“:
  [{“名称”:“ Freddy”,“年龄”:“ 23”},{“名称”:“简”,“年龄”:“ 23”},{“名称”:“杆”,“年龄”: “ 23”}]
  }”


奇怪的是,所有单独的部分似乎都在正常工作,但只是没有刷新表。

我找不到拒绝显示数据的数据表上的任何链接。我尝试了以下方法:

https://datatables.net/examples/basic_init/zero_configuration.html
https://datatables.net/examples/data_sources/ajax.html
fill datatable with json and web service
Datatables not refreshing after second network request
datatables dataSrc function not called on successful ajax response

任何帮助,不胜感激。

最佳答案

ajax上的DataTables文档说:


  success-不得覆盖,因为它在DataTables内部使用。要操纵/转换服务器返回的数据,请使用ajax.dataSrc(上方),或使用ajax作为函数(下方)。


通过提供自己的success回调,您可以使DataTables失去对Ajax结果的访问权限。

您可以改用dataSrc回调,该回调获取服务器响应,并且必须返回该对象供DataTables使用:

dataSrc: function (results) {
    toastr["success"]("AJAX call succeeded.", "Success:");
    var objJSON = $.parseJSON(results.d);
    return objJSON.data;
},

关于javascript - 尽管响应成功,但无法从AJAX调用填充JQuery数据表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42701101/

10-11 20:29
查看更多