CL-AJAX is Richard Newman's Common Lisp library to allow for remote invocation of functions through Javascript.

Quoting John Wiseman's writeup:

... lets you use Lisp to leverage the XMLHttpRequest/Ajax technique that's used to such good effect in Flickr, Google Suggest and Google Maps to create real-time interactivity without page loads.

CL-AJAX is designed for use with Araneida, providing a handler to vend exported functions over HTTP. It also generates the Javascript for you to call, returning the values to a callback of your choice, and includes some useful JS to do common callback handling (e.g. replacing an XHTML element by its ID with a new one from the server). CL-AJAX is heavily inspired by ModernMethod's SAJAX, a PHP (originally) and now multi-language library to call server-side functions from client Javascript using XMLHttpRequests. The backends seem slightly different, but getting them to work together wouldn't be too much effort... I think..!
A mini tutorial can be found at holygoat.


  • 2005-03-08: first release (0.1)
  • 2005-03-14: second major release (0.1.5), with miscellaneous fixes, compatibility improvements, and better documentation and example. Now tested with SBCL and OpenMCL on Mac OS X 10.3.8.
  • 2005-03-25: third major release (0.1.8), with much better documentation and more streamlined output. Please hammer away on this and report any bugs.
  • 2005-04-05: Bob Bane contributed a Javascript fix — 0.1.9! Cheers Bob! Safari and OmniWeb can now join the party.
  • 2005-09-21: Craig McDaniel prompted a few improvements, so 0.2.0. I have a Parenscript update in my queue, which I might get around to this year!

Plans for the next release:
  • Further testing
  • Stock Javascript functions that actually work on all browsers! Tried so far have been innerHTML, DOM adding (in various guises).Done in 0.1.9.
  • A true SAJAX-alike, giving up all the smart stuff in exchange for fitting in with their back-end
Previous versions: 0.1.5 0.1.8 0.1.9

web framework