随着ajax成功重绘datatables.net表,Asp MVC应用程序逐渐变慢

时间:2017-01-24 22:55:08

标签: javascript jquery ajax asp.net-mvc datatables

我的mvc应用程序中有一个视图,它使用datatables.net作为页面上的表格。我有一个ajax调用,在一段时间后刷新一页,工作正常。令我困惑的部分是,随着时间的流逝,它变得越来越不敏感,并且在我完全重新加载页面之前变得不可用。我发现滞后是由ajax成功调用表重绘引起的。我目前没有使用服务器端处理,并且使用DOM作为表的数据源。关于真正的问题是什么以及如何解决它的任何想法将非常感激。

主视图中的部分内容通过ajax调用进行更新:

<div id="issues-management">
    @Html.Partial("_IssuesManagement", Model)
</div>

主视图上的Javascript函数:

$(document).ready(function () {
        $.ajaxSetup({ cache: false });
        setInterval(function () {

            $.ajax({
                url: "@Url.Action("Issues","Tier2")",
                type: 'GET',
                dataType: 'html',
                success: function(result)
                {
                    $('#issues-management').html(result);
                    //Redraw tables on page load
                    $('#pending-issues-table').DataTable().draw(false);
                    $('#inprogress-issues-table').DataTable().draw(false);
                    $('#followup-issues-table').DataTable().draw(false);
                }
            })


        }, 5000);

        //Global functions to initialize and draw table on initial page load
        initDataTableNet('#pending-issues-table', 1040, 480); 
        initDataTableNet('#inprogress-issues-table', 1040, 480);
        initDataTableNet('#followup-issues-table', 1040, 480);
 });

1 个答案:

答案 0 :(得分:0)

请测试一下,让我知道结果:

     var process;
     setInterval(function () {

        process = $.ajax({
            url: "@Url.Action("Issues","Tier2")",
            type: 'GET',
            dataType: 'html',
            success: function(result)
            {
                $('#issues-management').html(result);
                //Redraw tables on page load
                $('#pending-issues-table').DataTable().draw(false);
                $('#inprogress-issues-table').DataTable().draw(false);
                $('#followup-issues-table').DataTable().draw(false);
                process = null;
            }
        })


    }, 5000);