如何设置对jquery数据表列的AJAX响应?

时间:2016-07-19 08:07:44

标签: javascript jquery ajax datatables

任何人都可以告诉我如何设置对每个表列的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>

我已经写了上面的内容,我没有收到错误,也没有将行添加到表中。你能帮助我吗?

3 个答案:

答案 0 :(得分:2)

这里的解决方案是改变响应。 之前它是{“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
}); } });

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

答案 1 :(得分:0)

  

使用此

$(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
                      });
                    }
                })
            });

答案 2 :(得分:0)

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

Sol 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方法