从自动完成将具有的数据表绑定到JSON数组

Binding datatable with to JSON array from autocomplete

本文关键字:数据表 绑定 数组 JSON      更新时间:2023-09-26

我使用自动完成字段从服务器获取数据并将其显示在数据表中:

$("#firstname").自动完成({

    source: function (request, response) {
         $.ajax({
             url: "http://myhost.com/webservices/test3.cfm",
             data: request,
             success: function (data) {
                    $('#results').dataTable({
                        "bProcessing": true,
                        "bJQueryUI": true,
                        "bLengthChange": true,
                        "bFilter": true,
                        "bAutoWidth": false,
                        "bRetrieve" : true,
                        "aaData": data , 
                        "aoColumns": [
                            { "sTitle": "Name", "sName": "name" },
                            { "sTitle": "Title", "sName": "title" },
                            { "sTitle": "Organization", "sName": "organization" },
                            { "sTitle": "Email", "sName": "email" },
                            { "sTitle": "Status", "sName": "status" }
                        ]
                    });
             }
         });
    }

ajax调用返回的数据为:
[["Steven,Grek","总裁","金沙集团"steven@yahoo.com","1"],["Steven,Grek","合伙人","Alliance有限公司","steven@yahoo.com","1"],["Steven,Grek","森林产品协会","steven@yahoo.com","1"]]

我得到以下错误:

  • DataTables警告(表id="results"):从数据源请求了行0的未知参数"1"
  • DataTables警告(表id="results"):从第9行的数据源请求了未知参数"1"
  • 显示2147个条目中的1到10个

如果我替换"aaData":数据
数据中包含来自的响应:
"aaData":[["Steven,Grek","总裁","Sands Corp."steven@yahoo.com","1"],["Steven,Grek","合伙人","Alliance有限公司","steven@yahoo.com","1"],["Steven,Grek","森林产品协会","steven@yahoo.com","1"]]

它是有效的。

知道我做错了什么吗?

在同事的帮助下解决了这个问题:来自我的ajax调用的数据类型是一个字符串。

$("#firstname").autocomplete({
    source: function (request, response) {
     $.ajax({
         url: "http://myhost.com/webservices/test3.cfm",
         data: request,
         success: function (data) {
            var obj = jQuery.parseJSON(data);      <---- typeof data is a string
            $('#results').dataTable({
                "bProcessing": true,
                "bJQueryUI": true,
                "bLengthChange": true,
                "bFilter": true,
                "bAutoWidth": false,
                "bRetrieve" : true,
                "aaData": obj,                 <---- Use the parsed json object instead
                "aoColumns": [
                    { "sTitle": "Name", "sName": "name" },
                    { "sTitle": "Title", "sName": "title" },
                    { "sTitle": "Organization", "sName": "organization" },
                    { "sTitle": "Email", "sName": "email" },
                    { "sTitle": "Status", "sName": "status" }
                ]
            });
         }
     });
   },

});