Here you go:

https://gist.github.com/1399519

It's in dire need of tidying up (on my list of TODOs), but as it stands it works pretty well. It requires that responses be in JSON and be of the form { status: 'statusCode', (msg: ''), payload: <blah> }. It provides four main methods: _send_, for basic AJAX requests; _print_, a more specific version of _send_ that we use for producing and retrieving PDF documents; _upload_, for iframe-based AJAX-like uploading; and _cross_, for cross-domain JSONP.

For _send_ and _print_, it will retry a few times, with an increasing (and randomised) back-off time. For all methods, it will only show the "Please wait" message (call a custom $wait function) after a short delay, to avoid flicker. It will also log the time taken and payload size for successful requests (where payload size is available), and record failures in the logs as well.

As I say, it's in need of tidying up -- I wrote it about two and a half years ago in a flurry of urgent development, and hasn't really been worked on since.

Hopefully it's somewhat helpful to you... I'll try to remember to post an updated version when I rework it!

-Barry

On 28/11/11 14:16, Philip Thompson wrote:
That's a good idea. I'll look into implementing that. Do you happen to have any code available for reference that you may share?

Thanks,
~Philip


On Nov 27, 2011, at 11:55 PM, Barry van Oudtshoorn wrote:

What you can do (in fact, what I did) is write a thin wrapper around the Request object. You can then extend this wrapper to transparently handle things like file uploads and JSONP through the same (or a very similar) interface, as well as have it automatically retry requests that fail. I also use this class to ensure that requests, their times, and their size are logged -- I can then get clients to forward these data through to me, which facilitates debugging.

In my implementation, I only show a "please wait" message after a short moment (around 250ms) -- this way, really quick requests (which should dominate) won't cause unsightly flickers. Using the wrapper also means that I can ensure that only one message is shown, rather than stacking them.

- Barry

On 28/11/11 13:39, Philip Thompson wrote:
Not exactly what I'm looking for because I don't want to add the spinner options to every request object - I want to add the spinner to the Request prototype. Is it possible to add the spinner options to the prototype and have it applied to all Requests?

Thanks,
~Philip


On Nov 27, 2011, at 10:25 PM, Aaron Newton wrote:

See Spinner in MooTools More.


On Nov 27, 2011, at 8:13 PM, Philip Thompson <[email protected] <mailto:[email protected]>> wrote:

Hi all.

It seems like I've seen something similar before, but I can't seem to find it. I am wanting to show a default "Loading…" message/icon when a Request occurs. In a previous project several years ago, I (re-)implemented the methods necessary in Request to add the loader to every request. It seems like there should be an easier way. David has done some similar functionality here (http://davidwalsh.name/dwrequest-mootools-12-ajax-listener-message), but I don't want to call a custom class, I just want to use the base Request(.HTML/.JSON) class with this added functionality.

I tried overwriting the main request class, but the onRequest and onComplete methods never seem to get called.
http://jsfiddle.net/philthathril/kpAUC/

What is the proper way to accomplish this? Is there already a solution out there that I just can't find?

Thanks in advance,
~Philip

--
http://lonestarlightandsound.com/


--
Barry van Oudtshoorn
www.barryvan.com.au

Not sent from my Apple πPhone.


--
Barry van Oudtshoorn
www.barryvan.com.au

Not sent from my Apple πPhone.

Reply via email to