[geeklog-devel] Dynamic Comments...
Niels Leenheer
niels at creatype.nl
Mon Jan 31 15:44:03 EST 2005
Vincent Furia wrote:
>I'm working on getting it past the prototype stage. While it (just)
>works now, I need to do some modifications to make it integrate
>cleanly and to not be embarrassed by my code. Hopefully I'll have it
>checked into CVS in the next couple days.
>
>
Vincent, great idea!
However, I can see a couple of problems with the code you are currently
using.
First of all, you are using a single XMLHttpRequest object without
protecting
it from being called more than once. As a result it is possible to
interrupt an
ongoing request. Try clicking on quickly on multiple triangles after
each other,
without waiting for one to finish loading. Only the request clicked on
last will
be honoured, the other ones will be 'loading' indefinately.
The solution to this problem would be to use an array and push each
request in it. Then use a timer to frequently look at this array, shift
one request of the bottom and execute it. Repeat until the array is
empty...
Secondly, there is a bug in the XMLHttpRequest implementation of Opera,
which basically requeres and extra check inside the onreadystatechange
function, otherwise it will be called multiple times after each other,
but only the first time with the proper responseText.
var inprogress = false;
function loadFragmentInToElement(fragment_url, element_id) {
var element = document.getElementById(element_id);
element.innerHTML = '<img src="/images/dynwait.gif"
alt="Loading..."/>Loading ...';
xmlhttp.open("GET", fragment_url);
xmlhttp.onreadystatechange = function() {
if (inprogress == true && xmlhttp.readyState == 4 &&
xmlhttp.status == 200) {
inprogress = false;
element.innerHTML = xmlhttp.responseText;
}
}
xmlhttp.send(null);
inprogress = true;
}
Niels
--
www.rakaz.nl
More information about the geeklog-devel
mailing list