Hi, > It's as if the > ajax.responders onComplete method isn't called.
Sorry, this is one of my pet peeves: Surely it would take seconds to modify your code to find out for sure whether it is, rather than speculating? ;-) > however it does not work with synchronous > requests. I don't see any synchronous requests in the code you quoted. Ajax.Request defaults to asynchronous unless you specify "asynchronous: false" in the options. Synchronous requests are a very bad idea; they completely freeze the UI of most browsers, so you're best off continuing to leave the option out. > any idea what i'm doing wrong? Looking at that code, what if you have more than one request running at a time? (And you do, in the code you posted, assuming menu.num is at least 2.) Since you're using a global for the timer, Request A can create a timer that gets started, then Request B starts a second timer (overwriting the reference to the one created by Request A), then Request A completes and clears Request B's timer -- Request A's timer is left in limbo. You might want to only create the timer if it hasn't already been created, and in the complete callback, use the counter maintained by Prototype (discussed on the responders page[1]) to decide whether to stop it. Or use your own counter within the timer, whatever route you want to go. I think if you look into those issues a bit, the answer's probably somewhere in that area. [1] http://prototypejs.org/api/ajax/responders HTH, -- T.J. Crowder tj / crowder software / com Independent Software Engineer, consulting services available On Feb 2, 3:41 pm, gilpster <kennethgil...@hotmail.com> wrote: > Hi everyone, hoping for a gentle ride: > > I mostly program actionscript rather than javascript, so although the > syntax is similar i get a little stuck now and then. > > I'm using the global ajax.responders method to start an animation > whenever an ajax request is made, and stop the animation upon > completion of the request. however it does not work with synchronous > requests. The onSuccess method of my ajax requests work as they > should, however the timer continues to animate. It's as if the > ajax.responders onComplete method isn't called. > > any idea what i'm doing wrong? > > thx > > kenneth > > Ajax.Responders.register({ > onCreate: function(){ > ajaxPageTimer = new __ajaxTimer('ajaxPageTimerBox',100); > ajaxPageTimer.startAnimation(); > }, > onComplete: function(){ > ajaxPageTimer.stopAnimation(); > } > > }); > > var mainPages = Array(); > var myRequests = new Object; > > function loadPages(pageSource, page) { > var url; > var i = 1; > //loadPage(); > function loadPage() { > url = "incfiles/main" + i + ".php"; > myRequests[i] = new Ajax.Request(url, { > onSuccess: function(transport){ > mainPages[i] = url; > > pasteMainContent.defer(transport.responseText, i); > i++; > if (i<menu.num+1) loadPage(); //so > this is faux asyncronous > } > }); > } > > } > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to prototype-scriptaculous@googlegroups.com To unsubscribe from this group, send email to prototype-scriptaculous+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---