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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to