Jquery auto refresh div

2019-01-23 19:24发布

问题:

Jquery auto refresh is using up a LOT of browser memory. Is there a way to stop this. I had a 2 div refreshing every 3 seconds but I moved it up to 9 and 15 seconds, It helped a little bit the longer the window stays open on my site the more memory it takes until finally the browser crashes.

<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>

回答1:

You could try to skip the load() and use $.ajax instead. I know load(); is an ajax request but I seem to recall it fetches the whole script. Try requesting a script, do your database calculations and return the data as json. I assume you're sending complete html with the data from the database request. Try this with json instead.

You'll get the data as an object, like this for example.

{"variable":"foo"}

Then you can fetch the data with a simple each statement.

$.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);
       }); 

    }
});

I think this shouldn't leak your memory and eventually crash your browser, even though you call it every other second or so. Give it a try and let me know how it goes.

Good luck!



回答2:

Try changing it to this:

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

It may halp to explicitly tell jQuery to empty the container first, so it can free up any event handlers etc. (Though it's not clear that there would be any handlers in there ...)

edit — actually never mind; I checked the jQuery sources and it looks like calling .html() (which load() does, I'm pretty sure) seems to always call empty() first anyway.



回答3:

Although an answer has been approved but I should tell you that. I had the same problem.

I found the problem in src of JQuery file. I used the JQuery site url as my source and yup it increased my computer usage to 99%. But then I downloaded the whole JQuery Script and saved it in my website directory, I used that in my source and then there was no problem with computer usage or memory. Try that too..