查看: 8171|回复: 0
打印 上一主题 下一主题

xajax中文手册(HonestQiao第一版,FlyingHail修改版)<一>

[复制链接]
跳转到指定楼层
1#
发表于 2007-9-14 22:33:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
<一>包含的内容:
* 什么是xajax?
* xajax如何工作?
* 为什么我要使用xajax代替其他PHP的Ajax库?
* 如何在我的PHP脚本之中使用xajax?

最早发布在我的个人Blog,文章地址:http://www.flyinghail.net/?p=44

原文:http://xajax.sourceforge.net/
英文原版:Copyright &copy; 2005 J. Max Wilson
简体中文翻译:HonestQiao(乔楚)/2005-12-7 17:23/(第一版)
修改&补充:FlyingHail/2006.08.01 16:43/参考:http://wiki.xajaxproject.org/
什么是xajax?
  xajax是一个开源的 PHP 类库 它能够让你黏合HTML、CSS、Javascript和PHP,轻而易举的开发功能强大、基于WEB的AJAX应用软件. 使用xajax开发的应用软件,无需重新调入页面,就能够异步调用服务器端的PHP函数和更新内容.

xajax 如何工作?
  你的应用软件需要异步调用的PHP函数, xajax的PHP对象都生成了对应的封装好了的Javascript函数. 当被调用时,封装的函数使用Javascript的XMLHttpRequest对象与服务器异步通讯,调用xajax对象对应的PHP函数. 调用结束后, PHP函数由xajax返回一个xajax的XML响应传递给应用程序. XML响应包含了特定的指令和数据,他们可以被xajax的Javascript消息分析器解析,并且被用于更新你的应用程序的内容.

为什么我要使用xajax代替其他PHP的ajax库?
  你应该选择一个最适合你的项目需要的库。
  xajax 提供了以下的功能, 它们使得ajax富有特色而又功能强大:

  * xajax特殊的 XML 响应 / javascript 消息分析系统 帮助你做到, 自动的处理函数返回的数据,按照PHP函数返回的指令更新内容或者状态. 因为xajax作了这些工作, 你不需要写javascript的回调处理函数.

  * xajax反对将代码和数据紧密地杂糅在一起的主张, 并且保持xajax的代码从与他代码分离. 因为它是对象构造的, 你可以加上自己定制的功能给xajax去扩展xajaxResponse 类和使用addScript方法.

  * xajax 可以工作在 Firefox, Mozilla, 大部分基于 Mozilla 的浏览器, Internet Explorer, 和 Safari.

  * 除了更新元素的值和内含的HTML内容(innerHTML), xajax 还能用于更新样式(styles), css 类, 多选和单选按钮选择,甚至可以更新任何元素的属性.

  * xajax 支持使用一维或者多维数组、关联数组(哈希数组) 作为xajax函数的参数从javascript传送给PHP. 反之Additionally, 如果你传送一个javascript的对象给xajax函数,PHP函数将接受一个描叙对象属性的关联数组(哈希数组).

  * xajax 提供了一种简单的异步表单处理方式. 使用 xajax.getFormValues() javascript 方法, 你可以轻而易举的在表单之中提交一个描绘值的数组作为参数传送到xajax异步处理函数:
  


JavaScript:

xajax_processForm(xajax.getFormValues('formId');
  它可以处理复杂的input 元素名称 ,例如 "checkbox[][]" 或者 "name[first]" 产生的多维或者关联数组(哈希数组), 就是普通提交表单那样使用PHP的$_GET数组

  * 使用xajax你可以动态的发送附加的javascript作为请求的响应到你的应用软件中运行,而这就和动态的更新元素的属性一样方便.

  * xajax会自动比较PHP函数返回的数据与你已经标记需要修改的元素属性. 只有当新的数据确实可以改变现有的属性,属性才会真的被更新. 这将可消除程序在一定时间间隔内更新与当前内容相同或者不同的内容而出现的明显的闪烁.

  * 每一个通过xajax简单注册的函数都可以有不同的请求方式. 所有的函数默认使用POST方式,除非你明确的指定使用GET方式. 如果使用GET请求,你必须非常明确的考虑它确实是你所需要的

  * 如果没有指定URI,xajax将设法自动确定脚本的URI. xajax的自动确定算法经过了充分的验证,确保在大部分HTTPS或者未知端口的HTTP服务器上也可以正常的工作.

  * xajax使用UTF8编码所有的请求和响应,以确保支持绝大部分的字符和语言. xajax已经成功测试了多种不同的UNICODE字符,包括Spanish, Russian, Arabic, and Hebrew

  * 几乎所有xajax生成的javascript都可以通过动态的外部javascript包含到你的web程序之中. 当你在浏览器之中查看程序的源代码时,不会有Javascript的函数定义混杂在HTML标记之中.

  * xajax可以使用在Smarty模板系统之中,仅仅需要创建一个smarty变量就可以包含xajax的javascript:
   


PHP:

$smarty->assign('xajax_javascript', $xajax->getJavascript());
   然后你可以使用在header模版之中使用
   


SMARTY:

{$xajax_javascript}
   从而把xajax应用到你的站点.

如何在我的PHP脚本之中使用xajax?
  xajax的设计是如此的富有特色,以至于不管是已有的web程序还是新的项目,它都能够被极其简单的部署和应用. 仅仅需要七步,你就可以在几乎任何PHP脚本之中加入xajax的强大功能:

1. 包含xajax类库:

  


PHP:

require_once("xajax.inc.php");
2. 实例化xajax 对象:

  


PHP:

$xajax = new xajax();
3. 注册你需要通过xajax调用的PHP函数的名称:

  


PHP:

$xajax->registerFunction("myFunction");
4. 编写注册的PHP函数,并且在函数之中使用xajaxResponse 对象返回XML指令:

PHP:

function myFunction($arg)
{
  // 对$arg做一些基本处理例如从数据库检索数据
  // 然后把结果赋值给变量,例如$newContent

  // 实例化xajaxResponse 对象
  $objResponse = new xajaxResponse();

  // 添加指令到响应之中,用于指派
  // 指定元素(例如id="SomeElementId")的innerHTML属性的新的内容
  $objResponse->addAssign("SomeElementId","innerHTML", $newContent);
  
  //返回xajaxResponse 对象生成的XML响应
  return $objResponse;
}
5. 在你的脚本输出任何信息之前,调用xajax用于接管请求:

PHP:

$xajax->processRequests();
6. 在页面的 标签之间, 告诉xajax生成所必需的Javascript:

PHP:

<?php $xajax->printJavascript(); ?>
7. 在程序中,从Javascript事件或者函数调用前面注册的函数:

HTML:

<div id="SomeElementId"></div>
  <button onclick="xajax_myFunction(SomeArgument);">
  就这么简单. xajax 会处理其他所有的事情. 你所要做的主要工作就是编写PHP函数,然后从函数之中返回xajax的XML响应。而后者通过xajaxResponse类可以非常简单的生成.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表