模态

时间:2016-10-12 16:27:26

标签: javascript jquery html ajax datatables

我有一个带有搜索框的模态,当搜索按钮被点击时,会有一个调用控制器的ajax调用,然后返回一个结果表,然后将其放入div中。像这样:

$.ajax({
    url: url,
    data: JSON.stringify(viewModel),
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    cache: false,
    type: "POST",
    success: function (result) {
        if (result.success === true) {
            $("#searchResultsPlaceHolder").show();
            $("#searchResultsPlaceHolder").html(result.view, function() {
                var noOfRows = $('#searchResultsTable tr').length;
                if (noOfRows > 1) {
                    loadSearchDatatable();
                }
            });
        }
    },
    error: function (responseText, textStatus, errorThrown) {
        alert('Error - ' + errorThrown);
    }
});

一切都很好,并且在我尝试使其成为数据表之前完美运行。如果我拿出线条

$("#searchResultsPlaceHolder").html(result.view, function() {
                var noOfRows = $('#searchResultsTable tr').length;
                if (noOfRows > 1) {
                    loadSearchDatatable();
                }
            });

并且只是

$("#searchResultsPlaceHolder").html(result.view)

它工作正常,它给了我一张表格,里面有我的结果。但由于这是一个模态,并且返回的结果可能会非常冗长,我想使用数据表来实现分页和排序。但每当我使用返回的html填充div后,我将loadSearchDatatable函数应用于表,我得到错误:

table id = searchResultsTable - Ajax错误

实际显示数据表,其中存在排序按钮和分页按钮,但它们都没有执行任何操作,并且表格长于我指定的长度(5)。这是我的数据表函数:

function loadSearchDatatable() {
$('#searchResultsTable').dataTable({
        ajax: "data.json",
        "bLengthChange": false,
        'iDisplayLength': 5,
        "bSort": true,
        "sPaginationType": "full_numbers",
        "bFilter": false,
        "sDom": 'ft<"bottom"ilp>',
        "bDestroy": false,
        "aaSorting": [[0, "asc"]]
    });
};

有没有人知道如何修复此错误?

1 个答案:

答案 0 :(得分:0)

请改用以下代码:

$("#searchResultsPlaceHolder").html(result.view);

var noOfRows = $('#searchResultsTable tr').length;
if (noOfRows > 1) {
   loadSearchDatatable();
}

同时删除功能ajax: "data.json",中的loadSearchDatatable()