社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Jquery

jQuery Find and Replace正在挂断浏览器!数据大小太大?

Community wiki • 2 年前 • 353 次点击  

在@kalley的大量帮助下,我们发现如果我评论以下两行,LAG就不见了!

 var $tableContents = $table.find('tbody')
 var $html = $('<tbody/>').html(data);

但是,我如何保留以上内容,但取消LAG?


更多信息: 下面的代码有效,但问题是 $.GET 导致浏览器挂起,直到ajax请求完成。我需要(流控制?)或其他东西来解决这个问题,而无需锁定/挂起浏览器,直到ajax完成GET请求。

最大的LAG/Lockup/Hang位于 $.get("updatetable.php" ,因为其他的只返回7个或更少的(数字)值,而这一个('updatetable.php')返回的值更多(200-300kb)。我想在这里实现某种流控制,或者让脚本在激发tablesort的update命令之前等待5秒,然后再显示toast消息,这样ajax就有时间获取 $.get(“updatetable.php”) 数据我只是不明白为什么它在获取数据时会锁定浏览器?它是否试图触发其他命令,这就是导致LAG的原因?

以下是步骤

1. $.get("getlastupdate.php" 将每隔10秒左右触发一次,以检查日期和时间是否相同,返回数据如下所示: 20130812092636 格式为:YYYmmddHHmmss。

2. 如果日期和时间与上次GET不相同,则 $.get("getlastupdate2.php" 将触发,该数据将被发送回并放入toast消息中,然后分发给用户 $().toastmessage('showNoticeToast', Vinfoo );

3. 在上述之前或之后( $.get(“getlastupdate2.php”) )另一个GET将启动: $.get('updatetable.php' 这将获取更新的表信息。并用新信息替换旧信息。然后更新/重新使用该表

4. 最后我想 $.get("ajaxcontrol.php" 如果用户登录,则返回1或2,否则为1,并破坏会话并将用户注销。

    <script type="text/javascript" src="tablesorter/jquery-1.10.2.min.js"></script> 
    <script type="text/javascript" src="tablesorter/final/jquery.tablesorter.js"></script>
    <script type="text/javascript" src="tablesorter/final/jquery.tablesorter.widgets.js"></script>
    <script type="text/javascript" src="tablesorter/final/toastmessage/jquery.toastmessage-min.js"></script>
    <script type="text/javascript" src="tablesorter/qtip/jquery.qtip.min.js"></script>

    <script type="text/javascript">
        var comper;
    function checkSession() {
        return $.get("ajaxcontrol.php", function (DblIn) {
            console.log('checking for session');
            if (DblIn == 1) {
                window.location = 'loggedout.php';
            }
        }).then(updateTable);
    }

    function checkComper() {
        var SvInfo;
        var onResponse = function (comperNow) {
            if (comper === undefined) {
                comper = comperNow;
            } else if (comper !== comperNow) {
                var Vinfoo;
                comper = comperNow;
                // returning this $.get will make delay done until this is done.
                return $.get("getlastupdate2.php", function (primaryAddType) {
                    Vinfoo = primaryAddType;
                    $().toastmessage('showNoticeToast', Vinfoo);
                }).then(checkSession);
            }
        };
        $.get('getlastupdate.php').then(onResponse).done(function () {
            tid = setTimeout(checkComper, 2000);
        });
    }


    function updateTable() {
        return $.get('updatetable.php', function (data) {
            console.log('update table');
var $table = $("table.tablesorter");
            var $tableContents = $table.find('tbody')
            var $html = $('<tbody/>').html(data);
              $tableContents.replaceWith('<tbody>' + data + '</tbody>')
            //$tableContents.replaceWith($html)
            $table.trigger("update", [true]);
            var currentUrl = document.getElementById("frmcontent").contentWindow.location.href;
            var urls = ['indexTOM.php', 'index1.php'],
                frame = document.getElementById('frmcontent').contentDocument;

            for (var i = 0; i < urls.length; i++) {
                var url = urls[i];
                if (frame.location.href.indexOf(url) !== -1) {
                    frame.location.reload()
                }
            }

            $('[title!=""]').qtip({});
        });

    };


    $(function () {
    var tid = setTimeout(checkComper, 2000);


    $("#append").click(function (e) {
        // We will assume this is a user action
        e.preventDefault();
        updateTable();
    });

            // call the tablesorter plugin
            $("table.tablesorter").tablesorter({
                theme: 'blue',
                // hidden filter input/selects will resize the columns, so try to minimize the change
                widthFixed: true,
                // initialize zebra striping and filter widgets
                widgets: ["saveSort", "zebra", "filter"],
                headers: {
                    8: {
                        sorter: false,
                        filter: false
                    }
                },
                widgetOptions: {
                    filter_childRows: false,
                    filter_columnFilters: true,
                    filter_cssFilter: 'tablesorter-filter',
                    filter_filteredRow: 'filtered',
                    filter_formatter: null,
                    filter_functions: null,
                    filter_hideFilters: false, // true, (see note in the options section above)
                    filter_ignoreCase: true,
                    filter_liveSearch: true,
                    filter_reset: 'button.reset',
                    filter_searchDelay: 300,
                    filter_serversideFiltering: false,
                    filter_startsWith: false,
                    filter_useParsedData: false
                }
            });

            // External search
            $('button.search').click(function () {
                var filters = [],
                    col = $(this).data('filter-column'), // zero-based index
                    txt = $(this).data('filter-text'); // text to add to filter
                filters[col] = txt;
                $.tablesorter.setFilters($('table.hasFilters'), filters, true); // new v2.9
                return false;
            });
       });
    </script>
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/157197
 
353 次点击  
文章 [ 2 ]  |  最新文章 2 年前