IE内存泄漏和使用jQuery的eval

时间:2011-11-16 21:10:35

标签: memory jquery memory-leaks

我创建了一个页面,需要根据数据库中的数据更新其元素。我想知道你对使用eval的这种方法有什么看法,我知道它有风险,但在我看来这是最快的方法。

$('.updatable').each(function () {
        var data;
        data = 'ViewObjectId=' + $(this).attr('objectid');

        $.ajax({
            async: true,
            url: '/Ajax/GetUpdatedViewObjectDataHandler.ashx',
            data: data,
            type: 'POST',
            timeout: 10000,
            success: function (data) {
                $.each(data, function (index, value) {
                        eval(value);
                });
            }
        });

现在我遇到的问题是页面加载时,页面每10秒更新一次,直到这里完美。

每轮更新后,我的Internet Explorer会窃取一些内存,并在几小时后获得整个机器内存,非常棒。

在这种情况下你会做什么?建议采用其他一些更新方法吗?或者甚至,你认为我能做些什么来避免这种内存泄漏?

1 个答案:

答案 0 :(得分:2)

在这里找到答案:Simple jQuery Ajax call leaks memory in Internet Explorer

解决方案:

 var request = $.ajax({ .... });

 request.onreadystatechange = null; 
 request.abort = null; 
 request = null;

JQuery不这样做,内存永远不会释放。

jQuery版本1.4.2。

现在它的工作就像一个魅力。