Okay, your reply finally showed up a day after the group said you made it. :) I'm glad you like it, I just wish I knew how to make it work in IE
On Jul 18, 5:17 pm, "Jonathan Sharp" <[EMAIL PROTECTED]> wrote: > Gordon, > > That's really slick! > > -js > > On 7/18/07, Gordon <[EMAIL PROTECTED]> wrote: > > > > > Finally got my net access on my dev machine back. :) Here's my > > code. > > > var myTrigger; > > var progressElem = $('#progressCounter'); > > $.ajax ({ > > type : 'GET', > > dataType : 'xml', > > url : 'somexmlscript.php' , > > beforeSend : function (thisXHR) > > { > > myTrigger = setInterval (function () > > { > > if (thisXHR.readyState > 2) > > { > > var totalBytes = > > thisXHR.getResponseHeader('Content-length'); > > var dlBytes = > > thisXHR.responseText.length; > > (totalBytes > 0)? > > progressElem.html > > (Math.round((dlBytes / totalBytes) * 100) + > > "%"): > > progressElem.html > > (Math.round(dlBytes / 1024) + "K"); > > } > > }, 200); > > }, > > complete : function () > > { > > clearInterval (myTrigger); > > }, > > success : function (response) > > { > > // Process XML > > } > > }); > > > It produces the desired results in Firefox 1.5, Safari3/Win and Opera > > 9. But Internet Explorer produces no result at all. It doesn't even > > throw an error. While it's not strictly necessary for there to be a > > download progress report I'd personally like to see it used far more > > often in AJAX apps than it actually is, and I really want to make this > > code 1005 cross-browser. > > > On Jul 18, 2:59 pm, Gordon <[EMAIL PROTECTED]> wrote: > > > Okay, I've got some code now that works well in all the major browsers > > > except for IE. I can't post the code just now but I'll put it up as > > > soon as I get proper net access back on the other computer. Oddly it > > > doesn't throw any errors in IE, it simply doesn't produce any > > > results. > > > > Gordon wrote: > > > > I have been thinking about how to do this all morning. At first I > > > > thought it wouldn't be possible because the XHR object doesn't seem to > > > > have a property for the amount of data downloaded. But I have come up > > > > with a possible work around. I have jotted some pseudocode down and > > > > am researching how well this approach might work, but unfortunately > > > > something's gone wrong with the firewall at work and my ability to > > > > browse and find practical solutions is badly compromised just now. > > > > Anyway, here's my pseudocode: > > > > > On (XHR enters stage 3) > > > > { > > > > Create an interval timer; > > > > } > > > > On (XHR enters stage 4) > > > > { > > > > Destroy timer; > > > > } > > > > On (Timer event) > > > > { > > > > If (fetching XML) > > > > Get ResponseXML length; > > > > else > > > > Get ResponseText length; > > > > If (Content-length header set) > > > > return (percent downloaded); > > > > else > > > > return (bytes downloaded); > > > > } > > > > > Gordon wrote: > > > > > I am trying to figure out a way of displaying how far along an AJAX > > > > > download is. Assuming I know the size of the file being downloaded > > > > > (this will require the server to send a content-length header) then > > if > > > > > I can check the number of bytes downloaded thus far I should be able > > > > > to work out the download progress. > > > > > > So what I need to know, how can you get the value of the content- > > > > > length header if it is set, and how can you check the number of > > bytes > > > > > sent periodically? I can then display a percentage for the case > > where > > > > > both are known, or simply a count of downloaded bytes when I don't > > > > > know the content length.