EXT: xaJax

Extension Key: xajax

Copyright 2004, Elmar Hinz, <elmar.hinz@team-red.net>

This document is published under the Open Content License

available from http://www.opencontent.org/opl.shtml

The content of this document is related to TYPO3

- a GNU/GPL CMS/Framework available from www.typo3.com

Table of Contents

EXT: xaJax	1

What is xajax?	1

How does xajax work?	1

Why should I use xajax instead of another Ajax library for PHP?	1

Where do I find the documentation and get help?	2

The xaJax Tutor	2

The original website of xajax	2

The newsgroup typo3.team.extension-coordination	2

Changelog	2

What is xajax?

xajax is an open source PHP class library that allows you to easily create powerful, web-based, Ajax applications using HTML, CSS, JavaScript, and PHP. Applications developed with xajax can asynchronously call server-side PHP functions and update content without reloading the page.

http://www.xajaxproject.org/

Within the extension xaJax the original xajax library has been licensed from LGPL to GPL to match the license requirements of TYPO3. All namings have been adapted to the coding guidelines of TYPO3.

How does xajax work?

The xajax PHP object generates JavaScript wrapper functions for the PHP functions you want to be able to call asynchronously from your application. When called, these wrapper functions use JavaScript's XMLHttpRequest object to asynchronously communicate with the xajax object on the server which calls the corresponding PHP functions. Upon completion, an xajax XML response is returned from the PHP functions, which xajax passes back to the application. The XML response contains instructions and data that are parsed by xajax's JavaScript message pump and used to update the content of your application.

Why should I use xajax instead of another Ajax library for PHP?

You should choose whatever library will best meet the needs of your project.

xajax offers the following features that, together, make it unique and powerful:

xajax's unique XML response / javascript message-pump system does the work for you, automatically handling the data returned from your functions and updating your content or state according to the instructions you return from your PHP functions. Because xajax does the work, you don't have to write javascript callback handler functions.

xajax is object oriented to maintain tighter relationships between the code and data, and to keep the xajax code separate from other code. Because it is object oriented, you can add your own custom functionality to xajax by extending the xajaxResponse class and using the addScript() method.

xajax works in Firefox, Mozilla, probably other Mozilla based browsers, Internet Explorer, and Safari.

In addition to updating element values and innerHTML, xajax can be used to update styles, css classes, checkbox and radio button selection, or nearly any other element attribute.

xajax supports passing single and multidimensional arrays and associative arrays from javascript to PHP as parameters to your xajax functions. Additionally, if you pass a javascript object into an xajax function, the PHP function will receive an associative array representing the properties of the object.

xajax provides easy asynchronous Form processing. By using the xajax.getFormValues() javascript method, you can easily submit an array representing the values in a form as a parameter to a xajax asynchronous function:

xajax_processForm(xajax.getFormValues('formId');

. It even works with complex input names like "checkbox[][]" and "name[first]" to produce multidimensional and associative arrays, just as if you had submitted the form and used the PHP $_GET array

Using xajax you can dynamically send additional javascript to your application to be run in response to a request as well as dynamically update element attributes.

xajax automatically compares the data returned from the PHP functions to the data that is already in the attribute of the element you have marked for change. The attribute is only updated with the new data if it will actually change what is already in the attribute. This eliminates the flicker often observed in applications that update content at a regular time interval with data which may or may not differ from extant content.

Each function registered to be accessible through xajax can have a different request type. All functions default to use POST unless GET is explicitly set. This is to encourage careful consideration of when to use GET requests

If no request URI is specified, xajax tries to autodetect the URL of the script. The xajax autodetection algorithm is sophisticated enough that, on most servers, it will work under a secure https:// protocol as well as http:// and with nonstandard ports.

xajax encodes all of its requests and responses in UTF-8 so that it can support a wider range of characters and languages. xajax has been successfully tested with various unicode characters including Spanish, Russian, Arabic, and Hebrew

Nearly all of the javascript generated by xajax is included into your web application through dynamic external javascript. When you view the source of your application in your browser, the markup will be not cluttered by JavaScript function definitions.

xajax can be used with the Smarty templating system by creating a variable in smarty that contains the xajax javascript:

$smarty->assign('xajax_javascript', $xajax->getJavascript());

Then you can use

{$xajax_javascript}

in your header template to use xajax on your site.

Where do I find the documentation and get help?

The xaJax Tutor extension

To demonstrate how xaJax can be used within the FE and the BE we have prepared an own Extension xaJax-Tutor with the extension key xajax_tutor.

The original website of xajax

On http://www.xajaxproject.org/ you find:

exmaples

a wiki

a big forum, where you usually get personal help quickly

The newsgroup typo3.team.extension-coordination

To coordinate the library extensions for TYPO3 is one target within this NG.

Changelog

See the changelog file within the extension.

EXT: xaJax - 2

EXT: xaJax

Kasper Skårhøj

2002-11-01T00:32:00

Elmar Hinz

Kasper Skårhøj