Just incase pastie service goes offline in the future, i paste the code below for future references.
function ajaxRespondToReadyStateWrapper(orig, readyState) { var state = Ajax.Request.Events[readyState]; var response = new Ajax.Response(this) if (state == 'Complete') { try { // GLOBAL RESPONSE VALIDATOR CODE HERE } catch (e) { this.dispatchException(e); } } orig(readyState); } Ajax.Request.prototype.respondToReadyState = Ajax.Request.prototype.respondToReadyState.wrap (denajaxRespondToReadyStateWrappereme); On Nov 13, 12:28 pm, matte <[EMAIL PROTECTED]> wrote: > Hi TJ, > > Based on your wrap recommendation I have extended prototype (wrapped > Ajax.request.prototype.respondToReadyState function) without modifying > the initialize function and source code of prototype js. Here is the > link to code:http://pastie.org/313738. > > I hope this helps someone else too. Do you have any thoughts or > suggestions on this? > > Thanks! > Mert. > > On Nov 13, 12:16 pm, "T.J. Crowder" <[EMAIL PROTECTED]> wrote: > > > Hi, > > > > I have lots of (I mean lots lots of) 'new Ajax.Request' calls in the > > > application source. > > > Global search and replace? :-) > > > > Maybe extending the > > > Ajax.Request base? > > > You could do that, sure, in your own copy of prototype.js; just search > > for Ajax.Request and modify the initialize function. You might be > > able to do it in your own code after loading Prototype by replacing > > the Ajax.Request.prototype.initialize implementation, but that gets > > tricky. Either option is (a bit) fragile, as it will require > > maintenance when Prototype is updated. > > > I'd probably go with search and replace. > > > -- T.J. :-) > > > On Nov 13, 9:58 am, matte <[EMAIL PROTECTED]> wrote: > > > > Hi TJ, > > > > Thank you very much! That is what i wanted. One last question though, > > > I have lots of (I mean lots lots of) 'new Ajax.Request' calls in the > > > application source. So is there a way to do this centralized instead > > > of replacing every 'new Ajax.Request' call. Maybe extending the > > > Ajax.Request base? > > > > Thanks. > > > Mert. > > > > On Nov 13, 11:48 am, "T.J. Crowder" <[EMAIL PROTECTED]> wrote: > > > > > Hi Mert, > > > > > You can create a factory function for requests that inserts your > > > > handler, something like this: > > > > > * * * * > > > > function specialSuccessStuff(transport) > > > > { > > > > // ...whatever your special onSuccess stuff is...} > > > > > function makeRequest(url, options) { > > > > var orig; > > > > > orig = options.onSuccess; > > > > if (orig) { > > > > options.onSuccess = function(transport) { > > > > specialSuccessStuff(transport); > > > > orig(transport); > > > > }; > > > > } else { > > > > options.onSuccess = specialSuccessStuff; > > > > } > > > > return new Ajax.Request(url, options);} > > > > > * * * * > > > > > ...then use makeRequest rather than new Ajax.Request for your actual > > > > requests. > > > > > Or here's another way using Function.wrap[1]: > > > > > * * * * > > > > function onSuccessWrapper(orig, transport) > > > > { > > > > // ...whatever your special onSuccess stuff is... > > > > > // Chain to original onSuccess handler > > > > orig(transport);} > > > > > function makeRequest(url, options) { > > > > > options.onSuccess = (options.onSuccess || > > > > Prototype.emptyFunction).wrap(onSuccessWrapper); > > > > return new Ajax.Request(url, options);} > > > > > * * * * > > > > > [1]http://prototypejs.org/api/function/wrap > > > > > HTH, > > > > -- > > > > T.J. Crowder > > > > tj / crowder software / com > > > > > On Nov 13, 9:30 am, matte <[EMAIL PROTECTED]> wrote: > > > > > > Hi, > > > > > > I have an application that uses Ajax.Request and its onSuccess event > > > > > handler in lots of places. > > > > > > I need to call a function (that will check the response) before all > > > > > these onSuccess events fired. I tried using Ajax.Responders.register > > > > > with onComplete event but it fires after Ajax.Request's onSuccess > > > > > event. Any suggestions? > > > > > > Thanks, > > > > > Mert. --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---