Hi and thanks!
I tried out what you mentioned and it works like a charm. Agh, so
stressful trying to figure this stuff out.
Thanks again.
On Oct 2, 11:18 am, bluezehn <[EMAIL PROTECTED]> wrote:
> So what you want to do is bind the onSuccess callback to the class in
> which this Ajax.Request is created. Theoretically this would go
> something like this:
>
> new Ajax.Request('./map/map.php?'+values,
>
> > {
> > method:'get',
> > onSuccess: function(transport)
> > {
> > this.response =
> > transport.responseText || "no response text";
>
> > }.bind(this),
> > onFailure: function(){
> > //
> > }
> > }
> > alert(this.response);
>
> But I think you might be missing a key characteristic of Ajax Requests
> here. They are asynchronous - that means they're done in parallel. So
> your code executes like this:
>
> Send Ajax Request
> Well, I don't particularly want to wait around for the server to
> respond so I'm going to do something else
> Try to alert(this.response) - ouch, it didn't have anything in.
> I've got nothing to do now, tralalala...
> Oh that ajax request has finished! And it was succesful...
> Off to the onSuccess callback then. Set response, and...
> I've got absolutely nothing to do!
>
> The advantage of this is that you can have lots of them going on at
> the same time, in parallel. But you can't make assumptions that if you
> create requests in the order 1,2,3 they'll finish in that order - that
> depends on how the server handles them. Response 3 may be cached and
> come back straight away, for example.
>
> So your code should be something like this:
> someFunctionOnClass: function()
> {
> new Ajax.Request('./map/map.php?'+values,
> {
> method:'get',
> onSuccess: function(transport)
> {
> this.response =
> transport.responseText || "no response text";
> this.alertFunction();
>
> }.bind(this),
> onFailure: function(){
> //
> }
> }},
>
> alertFunction: function() { alert(this.response); }
>
> On Oct 2, 4:37 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
> wrote:
>
> > Hello all,
>
> > I seem to be going in circles with something I would have to assume
> > would be simple. Im trying to return a value from the onSuccess
> > handler but it will not keep the value.
>
> > new Ajax.Request('./map/map.php?'+values,
> > {
> > method:'get',
> > onSuccess: function(transport)
> > {
> > var response =
> > transport.responseText || "no response text";
>
> > },
> > onFailure: function(){
> > //
> > }
> > });
> > alert(response);
>
> > Obviously this does not work. How can I access the variable outside of
> > the onSuccess event? Or, how could I access an object within the
> > onSuccess handler from outside of this scope?
>
> > I realize I can access and change global variables, but I am trying to
> > keep everything within my class which is what is causing me such
> > problems. I have tried using Bind, Call, and Apply but I don't think I
> > am using them right...
>
> > Any help would be very much appreciated.
>
> > Thanks
--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---