PHP AJAX 除了广为人知的 SAJAX、JPSPAN (原名为ScriptServer) 之外,Sourceforge 近期可下载的 PHP AJAX 又多了 xajax 、AJASON、flxAJAX、AjaxAC。
这些都有供乘法范例程式(好像变成 AJAX 的 Hello world!) ,虽然范例只能当参考,但至少可看出大致的架构。
[xajax]
xajax 最大的特色是支援 UTF-8 及 Smarty。而且 xajax 连网站都是 AJAX,范例请直接到网站的 Example 看。
(连线太慢时可能会导致 Javascript 载入不完全,以致于网站无法换页)
在范例中可以看出最大的特色是 client 端不用自己写 callback。client 端送出运算请求给 Server 端后,Server 端可以直接把运算结果传送到网页元素上。
至于 Smarty 支援的部份,因為 Client 端只需一行 $xajax->printJavascript(); 就可以产生 AJAX 所需的 Javascript,所以应该大部份的 Template engine 也都支援。
[AJASON]
AJASON 只能在 PHP 5 的环境执行,网站上提供的范例写的相当清楚,范例中提供了 function 、class 二种不同的使用方式,另外还有错误处理展示。至于经典的autocomplete 也值得一看。
[Flexible Ajax] (flxajax)
flxajax 主要是以 PHP5 写的,有另外提供 PHP 4 的版本。提供范例可看,而且 client 端的程式码切的不如前二者完整。
[AjaxAC]
AjaxAC 提供了四则运算的范例。看过原始码后发现逻辑相当的乱,Client 端还要写程式告知哪些网页元素要当成 widgets 才能交由 Server 端控制。而 Server 端竟然还有 Javascript Code (Callback),虽然看起来 event 部份规画的很好,但是前后端的逻辑根本完全混在一起,实在太逊了。
总结:
以范例比较起来,我个人比较偏好 xajax ,最主要原因是逻辑跟画面分的相当清楚。(当然 UTF-8 也是原因之一)
xajax 让 Server 端程式握有的网页元素有绝对的主控权,在架构程式时可以很清楚的把逻辑完全放在 Server 端,Client 端只要负责正确的显示画面及传送请求,这也是写程式时所使用的方式。
在这几种 PHP AJAX 之中,xajax 比 flxajax、AjaxAC 更有资格称为 Framework,可是 xajax 在 Sourceforge 上也只自称為 library:
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 that can asynchronously call server-side PHP functions and update content without reloading the page.
目前 xajax 採用 LGPL 授权,版本为 0.2.4。