2011-11-16 32 views
3

我已經創建了一個頁面,需要根據我們的數據庫中的數據發生的情況更新其元素。我想知道你對使用eval的這種方法有什麼看法,我知道這是有風險的,但在我看來這是最快的方法。IE內存泄漏,並與jQuery 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秒更新頁面,直到這裏是完美的我有問題。

每輪更新後,我的IE瀏覽器都會竊取一些內存,幾個小時後它就會獲得整個機器的內存,太棒了。

你會在這種情況下做什麼?推薦一些其他更新方法?甚至,你認爲我可以做些什麼來避免這種內存泄漏?

+0

我已經刪除了eval函數並創建了一個新函數,但泄漏仍然存在。 – Fabito

+0

問題是在ajax調用:$ .ajax( - >我不知道爲什麼呢。 – Fabito

+0

根據這篇文章,一致調用正在生成內存泄漏... http://stackoverflow.com/questions/3617442/jQuery的 - 內存泄漏與重複 - 阿賈克斯調用 我測試,似乎越來越好 – Fabito

回答

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。

現在它的工作就像一個魅力。

+1

這種黑客行爲並不適用於jQuery 1.7.1。 – Fabito

+0

你有沒有找到一個機會呢? – Pat

+0

不,我改變了我的代碼以減少請求。它解決了。 – Fabito