Hi there, Firstly, I apologise if this is hidden somewhere in the documentation, but I assure you I''ve read through it all and couldn''t see anything relating to this. I am new to prototype, and am slowing getting to grips with it (and JS in general). Today I had a user report to me that they are seeing the results of the OnLoading event handler *after* the OnComplete. By this, what I mean is that I simply have a textarea field on a page, of which the contents are pulled using a prototype GET request. They see "Loading..." as I have specified from the OnLoading handler. They then see the relevant text in the textarea, and then it seems to somehow go back to OnLoading extremely quickly, all in a flash. Either that, or for some reason OnLoading is kicking in *after* OnComplete has finished. I have only managed to reproduce this once, and now I can''t :/ Is there any particular order in which you are meant to specify OnEvent handlers? Should OnComplete come BEFORE OnLoading? Anyone have any ideas what the problem may be? Thanks in advance, Rich. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
It is in the documentation [1], and has been brought up on this list recently [2]. Search the archives [3]. "Depending on how your browser implements XMLHttpRequest, one or more callbacks may never be invoked. In particular, onLoaded and onInteractive are not a 100% safe bet so far. However, the global onCreate, onUninitialized and the two final steps are very much guaranteed." The short version: it depends on your browser. Perhaps those who manage the docs should style the paragraph to provide a stronger visual warning. 1. http://prototypejs.org/api/ajax/request 2. http://groups.google.com/group/rubyonrails-spinoffs/browse_frm/ thread/3a57ad6d644a28fe/c7bf329b539d8edf? lnk=gst&q=onloading&rnum=3&hl=en#c7bf329b539d8edf 3. http://groups.google.com/group/rubyonrails-spinoffs/search? hl=en&group=rubyonrails-spinoffs&q=onloading&qt_g=Search+this+group TAG On Jun 4, 2007, at 2:27 PM, Rich wrote:> > Hi there, > > Firstly, I apologise if this is hidden somewhere in the documentation, > but I assure you I''ve read through it all and couldn''t see anything > relating to this. I am new to prototype, and am slowing getting to > grips with it (and JS in general). > > Today I had a user report to me that they are seeing the results of > the OnLoading event handler *after* the OnComplete. > > By this, what I mean is that I simply have a textarea field on a page, > of which the contents are pulled using a prototype GET request. They > see "Loading..." as I have specified from the OnLoading handler. They > then see the relevant text in the textarea, and then it seems to > somehow go back to OnLoading extremely quickly, all in a flash. > Either that, or for some reason OnLoading is kicking in *after* > OnComplete has finished. > > I have only managed to reproduce this once, and now I can''t :/ > > Is there any particular order in which you are meant to specify > OnEvent handlers? Should OnComplete come BEFORE OnLoading? Anyone > have any ideas what the problem may be? > > Thanks in advance, > Rich. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Hi Tom, Thanks for your response. I did see this responder stuff in the documentation, but didn''t realise it was the workaround per se, so thanks for the heads up. I''ve been trying to get them to work for the last hour or so and I''m running into a perhaps obvious problem. I need the responder to be local to a request, and not global. I thought I could get around this by registering the responder, initialising the Ajax.Request, and then unregistering the responder - in that order. This seems to be half working, but... perhaps I''m unclear just exactly what "onComplete" is. Here is my code: Responder: var ajaxResponder = new Ajax.Responders.register({ onCreate: alert(''Created''), onComplete: alert(''Completed'')}); Request: new Ajax.Request(''ajax/pagecontent.php'', { method: ''get'', parameters: {pageid: id, time: Math.random()} }); Unregister responder: Ajax.Responders.unregister(ajaxResponder); Now, at the top of pagecontent I have a PHP sleep() statement which should halt the page for 5 seconds. By doing this, I am hoping that I see an alert box that says "Created" and then another alert box followed 5 seconds later with "Completed". Instead I am seeing immediate consecutive alert boxes. As this is the case, I assume that onComplete only referes to the actual AJAX request completing, and not the return of data? If so, is there a way I can actually have it alert once fully complete and data has been returned? Cheers, Rich. On Jun 4, 9:38 pm, Tom Gregory <t...-PGZyUNKar/Q@public.gmane.org> wrote:> It is in the documentation [1], and has been brought up on this list > recently [2]. Search the archives [3]. > > "Depending on how your browser implements XMLHttpRequest, one or more > callbacks may never be invoked. In particular, onLoaded and > onInteractive are not a 100% safe bet so far. However, the global > onCreate, onUninitialized and the two final steps are very much > guaranteed." > > The short version: it depends on your browser. > > Perhaps those who manage the docs should style the paragraph to > provide a stronger visual warning. > > 1.http://prototypejs.org/api/ajax/request > 2.http://groups.google.com/group/rubyonrails-spinoffs/browse_frm/ > thread/3a57ad6d644a28fe/c7bf329b539d8edf? > lnk=gst&q=onloading&rnum=3&hl=en#c7bf329b539d8edf > 3.http://groups.google.com/group/rubyonrails-spinoffs/search? > hl=en&group=rubyonrails-spinoffs&q=onloading&qt_g=Search+this+group > > TAG > > On Jun 4, 2007, at 2:27 PM, Rich wrote: > > > > > > > > > Hi there, > > > Firstly, I apologise if this is hidden somewhere in the documentation, > > but I assure you I''ve read through it all and couldn''t see anything > > relating to this. I am new to prototype, and am slowing getting to > > grips with it (and JS in general). > > > Today I had a user report to me that they are seeing the results of > > the OnLoading event handler *after* the OnComplete. > > > By this, what I mean is that I simply have a textarea field on a page, > > of which the contents are pulled using a prototype GET request. They > > see "Loading..." as I have specified from the OnLoading handler. They > > then see the relevant text in the textarea, and then it seems to > > somehow go back to OnLoading extremely quickly, all in a flash. > > Either that, or for some reason OnLoading is kicking in *after* > > OnComplete has finished. > > > I have only managed to reproduce this once, and now I can''t :/ > > > Is there any particular order in which you are meant to specify > > OnEvent handlers? Should OnComplete come BEFORE OnLoading? Anyone > > have any ideas what the problem may be? > > > Thanks in advance, > > Rich.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Maybe I''m missing something obvious... but if the timing of onCreate is sufficient, why not just execute the specific code immediately before creating the new request? i.e. doSomethingImportant(); new Ajax.Request(...); TAG On Jun 4, 2007, at 4:32 PM, Rich wrote:> > Hi Tom, > > Thanks for your response. I did see this responder stuff in the > documentation, but didn''t realise it was the workaround per se, so > thanks for the heads up. > > I''ve been trying to get them to work for the last hour or so and I''m > running into a perhaps obvious problem. > > I need the responder to be local to a request, and not global. I > thought I could get around this by registering the responder, > initialising the Ajax.Request, and then unregistering the responder - > in that order. This seems to be half working, but... perhaps I''m > unclear just exactly what "onComplete" is. > > Here is my code: > > Responder: > > var ajaxResponder = new Ajax.Responders.register({ > onCreate: alert(''Created''), > onComplete: alert(''Completed'')}); > > Request: > > new Ajax.Request(''ajax/pagecontent.php'', { > method: ''get'', > parameters: {pageid: id, time: Math.random()} > }); > > Unregister responder: > Ajax.Responders.unregister(ajaxResponder); > > > Now, at the top of pagecontent I have a PHP sleep() statement which > should halt the page for 5 seconds. By doing this, I am hoping that I > see an alert box that says "Created" and then another alert box > followed 5 seconds later with "Completed". Instead I am seeing > immediate consecutive alert boxes. > > As this is the case, I assume that onComplete only referes to the > actual AJAX request completing, and not the return of data? If so, is > there a way I can actually have it alert once fully complete and data > has been returned? > > Cheers, > Rich. > > > > > > > > On Jun 4, 9:38 pm, Tom Gregory <t...-PGZyUNKar/Q@public.gmane.org> wrote: >> It is in the documentation [1], and has been brought up on this list >> recently [2]. Search the archives [3]. >> >> "Depending on how your browser implements XMLHttpRequest, one or more >> callbacks may never be invoked. In particular, onLoaded and >> onInteractive are not a 100% safe bet so far. However, the global >> onCreate, onUninitialized and the two final steps are very much >> guaranteed." >> >> The short version: it depends on your browser. >> >> Perhaps those who manage the docs should style the paragraph to >> provide a stronger visual warning. >> >> 1.http://prototypejs.org/api/ajax/request >> 2.http://groups.google.com/group/rubyonrails-spinoffs/browse_frm/ >> thread/3a57ad6d644a28fe/c7bf329b539d8edf? >> lnk=gst&q=onloading&rnum=3&hl=en#c7bf329b539d8edf >> 3.http://groups.google.com/group/rubyonrails-spinoffs/search? >> hl=en&group=rubyonrails-spinoffs&q=onloading&qt_g=Search+this+group >> >> TAG >> >> On Jun 4, 2007, at 2:27 PM, Rich wrote: >> >> >> >> >> >> >> >>> Hi there, >> >>> Firstly, I apologise if this is hidden somewhere in the >>> documentation, >>> but I assure you I''ve read through it all and couldn''t see anything >>> relating to this. I am new to prototype, and am slowing getting to >>> grips with it (and JS in general). >> >>> Today I had a user report to me that they are seeing the results of >>> the OnLoading event handler *after* the OnComplete. >> >>> By this, what I mean is that I simply have a textarea field on a >>> page, >>> of which the contents are pulled using a prototype GET request. >>> They >>> see "Loading..." as I have specified from the OnLoading handler. >>> They >>> then see the relevant text in the textarea, and then it seems to >>> somehow go back to OnLoading extremely quickly, all in a flash. >>> Either that, or for some reason OnLoading is kicking in *after* >>> OnComplete has finished. >> >>> I have only managed to reproduce this once, and now I can''t :/ >> >>> Is there any particular order in which you are meant to specify >>> OnEvent handlers? Should OnComplete come BEFORE OnLoading? >>> Anyone >>> have any ideas what the problem may be? >> >>> Thanks in advance, >>> Rich. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Hi Tom, Basically I need the process to go like this... OnCreate -> Text area is updated with "Loading...." text to illustrate that the request is in process. OnComplete -> (I assume that OnComplete means the request has completed, and I have responseText), therefore I then update "Loading..." to the actual response text. Perhaps my logic is flawed and I''m not approaching this in the correct or appropriate way. If that''s the case, then I appreciate any advice. This WAS all working fine, but as mentioned previously, for some reason people were receiving the completed responseText and it was then being replaced with "Loading....". Cheers, Rich. On Jun 4, 11:39 pm, Tom Gregory <t...-PGZyUNKar/Q@public.gmane.org> wrote:> Maybe I''m missing something obvious... but if the timing of onCreate > is sufficient, why not just execute the specific code immediately > before creating the new request? > > i.e. > > doSomethingImportant(); > new Ajax.Request(...); > > TAG > > On Jun 4, 2007, at 4:32 PM, Rich wrote: > > > > > Hi Tom, > > > Thanks for your response. I did see this responder stuff in the > > documentation, but didn''t realise it was the workaround per se, so > > thanks for the heads up. > > > I''ve been trying to get them to work for the last hour or so and I''m > > running into a perhaps obvious problem. > > > I need the responder to be local to a request, and not global. I > > thought I could get around this by registering the responder, > > initialising the Ajax.Request, and then unregistering the responder - > > in that order. This seems to be half working, but... perhaps I''m > > unclear just exactly what "onComplete" is. > > > Here is my code: > > > Responder: > > > var ajaxResponder = new Ajax.Responders.register({ > > onCreate: alert(''Created''), > > onComplete: alert(''Completed'')}); > > > Request: > > > new Ajax.Request(''ajax/pagecontent.php'', { > > method: ''get'', > > parameters: {pageid: id, time: Math.random()} > > }); > > > Unregister responder: > > Ajax.Responders.unregister(ajaxResponder); > > > Now, at the top of pagecontent I have a PHP sleep() statement which > > should halt the page for 5 seconds. By doing this, I am hoping that I > > see an alert box that says "Created" and then another alert box > > followed 5 seconds later with "Completed". Instead I am seeing > > immediate consecutive alert boxes. > > > As this is the case, I assume that onComplete only referes to the > > actual AJAX request completing, and not the return of data? If so, is > > there a way I can actually have it alert once fully complete and data > > has been returned? > > > Cheers, > > Rich. > > > On Jun 4, 9:38 pm, Tom Gregory <t...-PGZyUNKar/Q@public.gmane.org> wrote: > >> It is in the documentation [1], and has been brought up on this list > >> recently [2]. Search the archives [3]. > > >> "Depending on how your browser implements XMLHttpRequest, one or more > >> callbacks may never be invoked. In particular, onLoaded and > >> onInteractive are not a 100% safe bet so far. However, the global > >> onCreate, onUninitialized and the two final steps are very much > >> guaranteed." > > >> The short version: it depends on your browser. > > >> Perhaps those who manage the docs should style the paragraph to > >> provide a stronger visual warning. > > >> 1.http://prototypejs.org/api/ajax/request > >> 2.http://groups.google.com/group/rubyonrails-spinoffs/browse_frm/ > >> thread/3a57ad6d644a28fe/c7bf329b539d8edf? > >> lnk=gst&q=onloading&rnum=3&hl=en#c7bf329b539d8edf > >> 3.http://groups.google.com/group/rubyonrails-spinoffs/search? > >> hl=en&group=rubyonrails-spinoffs&q=onloading&qt_g=Search+this+group > > >> TAG > > >> On Jun 4, 2007, at 2:27 PM, Rich wrote: > > >>> Hi there, > > >>> Firstly, I apologise if this is hidden somewhere in the > >>> documentation, > >>> but I assure you I''ve read through it all and couldn''t see anything > >>> relating to this. I am new to prototype, and am slowing getting to > >>> grips with it (and JS in general). > > >>> Today I had a user report to me that they are seeing the results of > >>> the OnLoading event handler *after* the OnComplete. > > >>> By this, what I mean is that I simply have a textarea field on a > >>> page, > >>> of which the contents are pulled using a prototype GET request. > >>> They > >>> see "Loading..." as I have specified from the OnLoading handler. > >>> They > >>> then see the relevant text in the textarea, and then it seems to > >>> somehow go back to OnLoading extremely quickly, all in a flash. > >>> Either that, or for some reason OnLoading is kicking in *after* > >>> OnComplete has finished. > > >>> I have only managed to reproduce this once, and now I can''t :/ > > >>> Is there any particular order in which you are meant to specify > >>> OnEvent handlers? Should OnComplete come BEFORE OnLoading? > >>> Anyone > >>> have any ideas what the problem may be? > > >>> Thanks in advance, > >>> Rich.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
If you want to do things "only when data comes back (ie, "OnSuccess"), you probably want to use the "OnSuccess" callback. http://www.prototypejs.org/api/ajax/request Following your logic: OnCreate -> Text area is updated with "Loading...." text to illustrate that the request is in process. -Just do this before you create your AJAX request, like Tom said OnComplete -> (I assume that OnComplete means the request has completed, and I have responseText), therefore I then update "Loading..." to the actual response text. -use onSuccess to update Loading...to the response text, and onFailure and onException to catch any exceptions. For details on what callbacks you can set up, check here: http://www.prototypejs.org/api/ajax/options -Jerod On 6/4/07, Rich <rflack-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > > Hi Tom, > > Basically I need the process to go like this... > > OnCreate -> Text area is updated with "Loading...." text to illustrate > that the request is in process. > OnComplete -> (I assume that OnComplete means the request has > completed, and I have responseText), therefore I then update > "Loading..." to the actual response text. > > Perhaps my logic is flawed and I''m not approaching this in the correct > or appropriate way. If that''s the case, then I appreciate any advice. > > This WAS all working fine, but as mentioned previously, for some > reason people were receiving the completed responseText and it was > then being replaced with "Loading....". > > Cheers, > Rich. > > On Jun 4, 11:39 pm, Tom Gregory <t...-PGZyUNKar/Q@public.gmane.org> wrote: > > Maybe I''m missing something obvious... but if the timing of onCreate > > is sufficient, why not just execute the specific code immediately > > before creating the new request? > > > > i.e. > > > > doSomethingImportant(); > > new Ajax.Request(...); > > > > TAG > > > > On Jun 4, 2007, at 4:32 PM, Rich wrote: > > > > > > > > > Hi Tom, > > > > > Thanks for your response. I did see this responder stuff in the > > > documentation, but didn''t realise it was the workaround per se, so > > > thanks for the heads up. > > > > > I''ve been trying to get them to work for the last hour or so and I''m > > > running into a perhaps obvious problem. > > > > > I need the responder to be local to a request, and not global. I > > > thought I could get around this by registering the responder, > > > initialising the Ajax.Request, and then unregistering the responder - > > > in that order. This seems to be half working, but... perhaps I''m > > > unclear just exactly what "onComplete" is. > > > > > Here is my code: > > > > > Responder: > > > > > var ajaxResponder = new Ajax.Responders.register({ > > > onCreate: alert(''Created''), > > > onComplete: alert(''Completed'')}); > > > > > Request: > > > > > new Ajax.Request(''ajax/pagecontent.php'', { > > > method: ''get'', > > > parameters: {pageid: id, time: Math.random()} > > > }); > > > > > Unregister responder: > > > Ajax.Responders.unregister(ajaxResponder); > > > > > Now, at the top of pagecontent I have a PHP sleep() statement which > > > should halt the page for 5 seconds. By doing this, I am hoping that I > > > see an alert box that says "Created" and then another alert box > > > followed 5 seconds later with "Completed". Instead I am seeing > > > immediate consecutive alert boxes. > > > > > As this is the case, I assume that onComplete only referes to the > > > actual AJAX request completing, and not the return of data? If so, is > > > there a way I can actually have it alert once fully complete and data > > > has been returned? > > > > > Cheers, > > > Rich. > > > > > On Jun 4, 9:38 pm, Tom Gregory <t...-PGZyUNKar/Q@public.gmane.org> wrote: > > >> It is in the documentation [1], and has been brought up on this list > > >> recently [2]. Search the archives [3]. > > > > >> "Depending on how your browser implements XMLHttpRequest, one or more > > >> callbacks may never be invoked. In particular, onLoaded and > > >> onInteractive are not a 100% safe bet so far. However, the global > > >> onCreate, onUninitialized and the two final steps are very much > > >> guaranteed." > > > > >> The short version: it depends on your browser. > > > > >> Perhaps those who manage the docs should style the paragraph to > > >> provide a stronger visual warning. > > > > >> 1.http://prototypejs.org/api/ajax/request > > >> 2.http://groups.google.com/group/rubyonrails-spinoffs/browse_frm/ > > >> thread/3a57ad6d644a28fe/c7bf329b539d8edf? > > >> lnk=gst&q=onloading&rnum=3&hl=en#c7bf329b539d8edf > > >> 3.http://groups.google.com/group/rubyonrails-spinoffs/search? > > >> hl=en&group=rubyonrails-spinoffs&q=onloading&qt_g=Search+this+group > > > > >> TAG > > > > >> On Jun 4, 2007, at 2:27 PM, Rich wrote: > > > > >>> Hi there, > > > > >>> Firstly, I apologise if this is hidden somewhere in the > > >>> documentation, > > >>> but I assure you I''ve read through it all and couldn''t see anything > > >>> relating to this. I am new to prototype, and am slowing getting to > > >>> grips with it (and JS in general). > > > > >>> Today I had a user report to me that they are seeing the results of > > >>> the OnLoading event handler *after* the OnComplete. > > > > >>> By this, what I mean is that I simply have a textarea field on a > > >>> page, > > >>> of which the contents are pulled using a prototype GET request. > > >>> They > > >>> see "Loading..." as I have specified from the OnLoading handler. > > >>> They > > >>> then see the relevant text in the textarea, and then it seems to > > >>> somehow go back to OnLoading extremely quickly, all in a flash. > > >>> Either that, or for some reason OnLoading is kicking in *after* > > >>> OnComplete has finished. > > > > >>> I have only managed to reproduce this once, and now I can''t :/ > > > > >>> Is there any particular order in which you are meant to specify > > >>> OnEvent handlers? Should OnComplete come BEFORE OnLoading? > > >>> Anyone > > >>> have any ideas what the problem may be? > > > > >>> Thanks in advance, > > >>> Rich. > > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---