2010-06-20 9 views
7

Làm mới tự động bằng Jquery đang sử dụng rất nhiều bộ nhớ trình duyệt. Có cách nào để ngăn chặn điều này. Tôi có một 2 div làm mới mỗi 3 giây nhưng tôi di chuyển nó lên đến 9 và 15 giây, Nó đã giúp một chút còn cửa sổ vẫn mở trên trang web của tôi bộ nhớ nhiều hơn nó cần cho đến khi cuối cùng trình duyệt bị treo.Tự động làm mới Jquery div

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script> 


<script> 
var auto_refresh = setInterval(
function() 
{ 
$('#details2').load('links2.php').fadeIn("slow"); 
}, 15000); // refresh every 10000 milliseconds</script> 
+0

Bạn đang sử dụng plugin/mã nào để thực hiện việc này? – Matt

+2

Bạn có thể đăng một số mã liên quan không? – Pointy

+0

Trả lời

2

Bạn có thể thử bỏ qua tải() và sử dụng $ .ajax để thay thế. Tôi biết load(); là một yêu cầu ajax nhưng tôi dường như nhớ lại nó lấy toàn bộ tập lệnh. Hãy thử yêu cầu một tập lệnh, thực hiện các phép tính cơ sở dữ liệu của bạn và trả về dữ liệu dưới dạng json. Tôi giả sử bạn đang gửi html hoàn chỉnh với dữ liệu từ yêu cầu cơ sở dữ liệu. Hãy thử điều này với json để thay thế.

Bạn sẽ nhận dữ liệu dưới dạng đối tượng, chẳng hạn như ví dụ này.

{"variable":"foo"} 

Sau đó, bạn có thể tìm nạp dữ liệu bằng mỗi câu lệnh đơn giản.

$.ajax({ 
    url: "links2.php", 
    type: "POST", 
    dataType: "json", 
    success: function(data){ 

     // data here is returned as objects since it's json 
     $.each(data, function(key, value) { 
      $("#details2").empty().append(value.variable); 
     }); 

    } 
}); 

Tôi nghĩ điều này sẽ không làm hỏng bộ nhớ của bạn và cuối cùng làm hỏng trình duyệt của bạn, ngay cả khi bạn gọi nó sau mỗi giây. Hãy thử và cho tôi biết nó như thế nào.

Chúc may mắn!

+0

cảm ơn stefan, điều này có vẻ đơn giản, đủ để làm việc. –

0

Hãy thử thay đổi nó như thế này:

// ... 
$('#details2').empty().load('links2.php').fadeIn('slow'); 

Nó có thể halp nói một cách rõ ràng jQuery để trống container đầu tiên, vì vậy nó có thể giải phóng bất kỳ xử lý sự kiện vv (Mặc dù nó không phải là rõ ràng rằng có sẽ là bất kỳ người xử lý nào trong đó ...)

chỉnh sửa — thực sự không bao giờ bận tâm; Tôi đã kiểm tra các nguồn jQuery và nó trông giống như gọi .html() (trong đó load() hiện, tôi khá chắc chắn) dường như luôn luôn gọi empty() đầu tiên anyway.

+0

Tôi sẽ thử bất kỳ ai biết nó có thể hoạt động. Cảm ơn –

0

Mặc dù câu trả lời đã được chấp thuận nhưng tôi nên cho bạn biết điều đó. Tôi đã từng gặp vấn đề tương tự.

Tôi đã tìm thấy sự cố trong src tệp JQuery. Tôi đã sử dụng url của trang web JQuery làm nguồn của tôi và yup nó đã tăng mức sử dụng máy tính của tôi lên 99%. Nhưng sau đó tôi đã tải xuống toàn bộ tập lệnh JQuery và lưu nó trong thư mục trang web của mình, tôi đã sử dụng nó trong nguồn của mình và sau đó không có vấn đề gì với việc sử dụng máy tính hoặc bộ nhớ. Hãy thử điều đó quá ..