【问题标题】:How to set AJAX response to jquery data table columns?如何设置对 jquery 数据表列的 AJAX 响应?
【发布时间】:2016-07-19 08:07:43
【问题描述】:

谁能告诉我如何将 jquery 数据的响应设置为每个表列。

这是我的 javascript 代码:

$(document).ready (function() {
$.ajax({
    url: 'userController?action=list',
    success : function(response) {
        var jsonObject = $.parseJSON(response); 
        alert(jsonObject.Password);
        alert(jsonObject.UserId);
        $('#usertable').dataTable( {
            data : jsonObject,
            columns: [
                      {'jsonObject' : 'UserId'},
                      {'jsonObject' : 'Password'},
                      {'jsonObject' : 'Level'},               
                      ],
            searching : false
        });
    }
});});

这里是String中的响应,响应是 {"UserId" : "Manohar", "Password" : "1234", "Level" : "lev"}.

下面是jsp页面。

<table id="usertable">
<thead>
    <tr>
        <th>User Id</th>
        <th>Password</th>
        <th>Level</th>
    </tr>
</thead>

我已经写了上面的内容,我没有收到错误,也没有将行添加到表中。你们能帮我解决这个问题吗?

【问题讨论】:

    标签: javascript jquery ajax datatables


    【解决方案1】:

    这里的解决方案是更改响应。 之前是 {"userid":"manohar", "password":"1234"},现在我把它改成了 [["manohar", "1234"]]。 然后在js文件中

    $.ajax({
        url: 'userController?action=list',
        success : function(data, textStatus, jqXHR) {
            var table_data = JSON.parse(data);
            var table = $('#usermaintenancetable').DataTable( {
                data: table_data
    }); } });
    

    所以这里的响应是字符串格式,我使用 JSON.parse() 将其更改为 JSON,然后将其作为数据传递给数据表。

    【讨论】:

      【解决方案2】:

      使用这个

      $(document).ready (function() {
      $.ajax({
          url: 'userController?action=list',
          success : function(response) {
              var jsonObject = $.parseJSON(response); 
              alert(jsonObject.Password);
              alert(jsonObject.UserId);
              $('#usertable').dataTable( {
                  data : jsonObject,
                  //data : response,
                  columns: [
                            {"data" : "UserId"},
                            {"data" : "Password"},
                            {"data" : "Level"}              
                            ],
                  searching : false
              });
          }
      });});
      

      仅将 jsonObject 更改为 data

      尝试另一种方法,你可以使用 ASP.NET MVC

      $(document).ready(function () {
         $.get("/userController/list", function (data) {
              //  console.log(data);
              if (data != null) {
                   $('#usertable').dataTable({                           
                             data: data,
                             columns: [
                                       {"data" : "UserId"},
                                       {"data" : "Password"},
                                       {"data" : "Level"}              
                                      ],
                            searching : false
                            });
                          }
                      })
                  });
      

      【讨论】:

      • 我也尝试了这种方法,但没有奏效。并且控制台上没有错误。
      • 你有数据alert(jsonObject.Password);
      • 试试这个data : jsonObject,更改data : response,
      • 我正在使用 Spring MVC。实际上我能够得到响应,但同样无法应用于数据表。
      【解决方案3】:

      您不应在成功方法中重新初始化数据表。获得 json 对象响应后,您应该使用 row.add() 方法,

      解决方案 1:(用于循环 JSON 对象)

      success:function(data, textStatus, jqXHR) {
          $.each(data, function (i,item) {
              var rowNode= [ item.UserId, item.Password, item.Level]
              dataTable.row.add(rowNode).draw();
          }); 
      }
      

      Sol 2 :(对于 JSON 字符串值)

      success:function(data, textStatus, jqXHR) {
              var jsonData = JSON.parse(data);
              var rowNode= [ jsonData.UserId, jsonData.Password, jsonData.Level]
              dataTable.row.add(rowNode).draw();
      }
      

      上面的代码一次添加一行。要一次添加多行,请使用rows.add() API 方法

      【讨论】:

      • 使用上面的代码我得到了错误 jquery.js:569 Uncaught TypeError: Cannot use 'in' operator to search 'length' in {"UserId" : "lin", "密码”:“1111”,“级别”:“管理员”}
      • 仍然没有运气:(item.UserId 出现未定义错误(对于所有)。当我在 $.each() 之外访问它时,我可以打印 JSON.parse (data).UserId 但无法向数据表添加行。
      • @manohare 好的,然后简单地尝试不使用项目。试试我的替代代码。
      • $.each 用于循环遍历多个对象,因为您返回的是不需要循环的单个 json 字符串,并且 json 响应不是对象。而是它的键值 json 字符串。所以试试我的 Sol2。它应该可以工作。
      • 谢谢幸运。我已经改变了回应。而不是 {"UserId": "name", "Password":"12345"},使用 [["name", "12345"]]。然后用 JSON.parse(data) 解析它。使用这种方法,它工作正常:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多