使用jquery ajax响应重新加载选项卡

时间:2015-09-24 21:07:30

标签: javascript jquery html ajax datatables

我正在使用jquery ajax来调用servlet。它在页面加载期间被调用,并使用ajax响应(来自servlet)填充div。

我想在单击按钮时再次使用此功能并重新加载div。我在这里遇到问题。不是重新加载div,而是将所有值附加到表中的现有值。

如何通过替换之前的内容重新加载此div?

我的代码(HTML):

<div>
        <table id="table1">
            <thead>
                <tr>
                    <th>Col1</th>
                    <th>Col2</th>
                    <th>Col3</th>
                </tr>
            </thead>
            <tbody>
                <!-- Adds the rows dynamically from Jquery AJAX response -->
            </tbody>
        </table>
</div>

JQuery的:

function loadMyTable() {
    $.get('CallServlet', {}, function (responseText) {
        var response = $.parseJSON(responseText);
        $.each(response, function (key, value) {
            var row = $("<tr/>")
            $('#table1').append(row);
            row.append($("<td>" + value.val1 + "</td>"));
            row.append($("<td>" + value.val2 + "</td>"));
            row.append($("<td>" + value.val3 + "</td>"));
        });
        $('#table1').dataTable();
    });
}

4 个答案:

答案 0 :(得分:0)

在添加行之前,您可能需要清空表。使用.empty()。还将新行添加到tbody,而不是表。

function loadMyTable(){
         $.get('CallServlet', {
            }, function (responseText) {
                var response = $.parseJSON(responseText);
                $('#table1 tbody').empty();
                $.each(response, function (key, value) {
                    var row = $("<tr/>")
                    $('#table1 tbody').append(row);
                    row.append($("<td>" + value.val1 + "</td>"));
                    row.append($("<td>" + value.val2 + "</td>"));
                    row.append($("<td>" + value.val3 + "</td>"));
            });
            $('#table1').dataTable();
        });
}

答案 1 :(得分:0)

在向其添加新内容之前,您需要清除table1内容。

$("#table1").epmty();

$("#table1 tr").remove();

$("#table1").html('');

答案 2 :(得分:0)

1)将Id提供给你的Tbody

 <tbody id='table1tbody'>

 </tbody>

2)改变追加

function loadMyTable() {
    $.get('CallServlet', {}, function (responseText) {
        var response = $.parseJSON(responseText);
        $("#table1tbody").html("");
        $.each(response, function (key, value) {
            var row="<tr>";
            row+="<td>" + value.val1 + "</td>";
            row+="<td>" + value.val2 + "</td>";
            row+="<td>" + value.val3 + "</td>";
            row+="</tr>";
            $("#table1tbody").append(row);
        });
        $('#table1').dataTable();
    });
}

答案 3 :(得分:0)

我用过

$('#table1).datatable().fnDestroy();

这解决了重新加载表时遇到的问题。更新了以下代码

function loadMyTable() {
    $.get('CallServlet', {}, function (responseText) {
       $('#table1).datatable().fnDestroy();
        var response = $.parseJSON(responseText);
        $.each(response, function (key, value) {
            var row = $("<tr/>")
            $('#table1').append(row);
            row.append($("<td>" + value.val1 + "</td>"));
            row.append($("<td>" + value.val2 + "</td>"));
            row.append($("<td>" + value.val3 + "</td>"));
        });
        $('#table1').dataTable();
    });
}

谢谢大家!