制作 jquery 数据表以提取和使用从 Rpc 服务器返回的 json 的给定部分

Posted

技术标签:

【中文标题】制作 jquery 数据表以提取和使用从 Rpc 服务器返回的 json 的给定部分【英文标题】:Make jquery datatables to extract and use a given part of a returned json from an Rpc server 【发布时间】:2014-06-14 20:36:11 【问题描述】:

我有一个 json rpc 服务器,它以给定的模式提供和重新运行 json,包括 json 字符串的 id 结果和 jsonrpc 键


jsonrpc: "2.0"
id: "1"
result: ""iTotalDisplayRecords":"2","iTotalRecords":"2","aaData":   [["1","Kenya","Nairobi","0","34"],["2","USA","New York","70","38"]],"sEcho":0"

现在问题出现在响应进入网络浏览器之后,数据表只是永远显示来自服务器的加载数据

我试过添加

..."sAjaxDataProp":"",...

但这会导致找不到匹配的行。我在 Rpc 服务器中使用了与 cgi 脚本相同的 coe,发现我得到了所需的输出并且表格填充得很好。来自脚本的 json 响应为

"iTotalDisplayRecords":"2","iTotalRecords":"2","aaData":[["1","Kenya","Nairobi","0","34"],["2","USA","New York","70","38"]],"sEcho":1

我想要一种方法告诉数据表只选择 jsonrpc 请求的结果部分,以便按预期显示返回的数据。

这是我的 javascript 中的发送数据部分

oTable=$('#ip_data').dataTable( 
                            "bProcessing": true,
                             "bServerSide": true,
                             "bPaginate": true,
                             "bScrollCollpase": true,
                             "sScrollY": "200px",
                             "sAjaxSource": "/url",
                             "fnServerData": function (sSource, aoData, fnCallback, oSettings) 
                                aoData.push("name":"method","value":"datatables");
                                aoData.push("name":"id","value":"1");
                                oSettings.jqXHR = $.ajax(
                                    "dataType":"json",
                                    "type":"GET",
                                    "url":sSource,
                                    "data":aoData,
                                    "success":fnCallback
                                );//END OF AJAX                                                           
                    //END OF FNSERVERDATA
            );//END OF DATATABLE

【问题讨论】:

【参考方案1】:

首先,使用数据表 1.10(并更新您的语法!)https://datatables.net/upgrade/1.10-convert

其次,阅读此https://datatables.net/manual/server-side 然后阅读此https://datatables.net/reference/option/ajax

您的解决方案可能最终看起来像

var oTable = $('#ip_data').DataTable( 
    "serverSide": true,
    "ajax": 
        "url": "/url",
        "data": 
            "method": "datatables",
            "id": "1",
        
    ,
);

【讨论】:

通过使用 console.log(json.result) 我得到了所需的响应。为什么当我给它提供 json.result 的参数时 fnCallback 没有填充表,就像这样“成功”: function(json) console.log(json.result); fnCallback(json.result);说无法读取未定义的属性“长度”

以上是关于制作 jquery 数据表以提取和使用从 Rpc 服务器返回的 json 的给定部分的主要内容,如果未能解决你的问题,请参考以下文章

以合法方式从 Facebook 提取公共数据

如何使用 Ajax 和 Jquery 从 PHP 数据库中提取信息,并使用该信息填充元素?

制作 C++/MFC 应用程序以从其他应用程序中提取 AssemblyInfo?

从哪里开始制作 Adwords 应用程序?

提取数组成员以通过jquery设置方法

如何从 Datatables jQuery 插件中提取过滤后的数据?