After using Prototype.js for a while, one shortcoming I’ve found is that it lacks the built-in ability to submit an entire form via AJAX. To remedy this, I created an addon to address this (available here: prototype.ajax.form.js). View the source on the example page to see usage. The only thing this addon does not do is submit file uploads… and I don’t think it’s possible to do so since access to the client’s computer via javascript is not permitted for security reasons. PLEASE correct me if I’m wrong, because I’d love to be able to do this.
Go here for a usage example.

For those of you looking for a way to easily add a touch of finesse to you RIA, Scriptaculous is your answer. From simple things like progressive background highliting to more complex effects like draggable elements, and even more, Scriptaculous makes it possible in very short order.

Prototype.js

February 16th, 2006

I started using Prototype.js for it’s simple, yet powerful, Ajax.Request object to handle all my XMLHTTPRequest needs, but have since fallen in love with the scripting style that Sam Stephenson implemented in this awesome framework.
For those of you who are not familiar with Prototype.js, it is an easy-to-adopt framework for real object-oriented JavaScripting that, as the author states, “is quickly becoming the codebase for web-application authors everywhere,”… And I do not doubt it.

While I won’t be documenting the the API in it’s entirety (as Sergio Pereira has already created an excellent documentation site for prototype.js), I will show you real-world usage and examples of this little wonder.

Miscellaneous JavaScript plugin

February 14th, 2006

I’ve created a non-invasive plugin for including some of the basic JavaScript libraries that I use (namely Prototype.js and Scriptaculous). While there is no added benefit of including this plugin alone, any RIA plugin that I release in the future will more than likely depend on this — so watch for these soon.

Click here to download the plugin (tar.gz) (updated 2/16 for Scriptaculous 1.5.2)