PHP的AJAX框架(1)

时间: 2007-01-16 / 分类: 收藏推荐 / 浏览次数: 3,695 / 0个评论 发表评论

Xajax中文手册

什么是xajax?
xajax如何工作?
为什么我要使用xajax代替其他PHP的Ajax库?
如何在我的PHP脚本之中使用xajax?
如何异步更新内容?
如何异步处理表单数据?
如何给xajax增加定制功能?
我能在私有或者收费产品之中使用xajax吗?

What is xajax?
How does xajax work?
Why should I use xajax instead of another Ajax library for
PHP?
How do I use xajax in my PHP script?
How do I update my content asynchronously?
How do I process form data asynchronously?
How do I add custom functionality to xajax?
May I use xajax in a proprietary product and charge for it?

什么是xajax?
Xajax是一个开源的 PHP 类库
它能够让你黏合HTML、CSS、JavaScript和PHP,轻而易举的开发功能强大、基于WEB的AJAX应用软件.
使用xajax开发的应用软件,无需重新调入页面,就能够异步调用服务器端的PHP函数和更新内容.

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

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.

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

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

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

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 可以工作在 Firefox, Mozilla, 大部分基于 Mozilla 的浏览器,
Internet Explorer, 和 Safari.

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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可以使用在Smarty模板系统之中,仅仅需要创建一个smarty变量就可以包含xajax的javascript:

$smarty->assign(‘xajax_javascript’,
$xajax->getJavascript());
然后你可以使用在header模版之中使用
{$xajax_javascript}
从而把xajax应用到你的站点.

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.

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

How do I use xajax in my PHP script?
xajax is designed to be extremely easy to implement in both
existing web applications as well as new projects. You can add the
power of xajax to nearly any PHP script in seven easy steps:

包含xajax类库:
require_once(xajax.inc.php);

实例化xajax 对象:
$xajax = new xajax();

注册你需要通过xajax调用的PHP函数的名称:
$xajax->registerFunction(myFunction);

编写注册的PHP函数,并且在函数之中使用xajaxResponse
对象返回XML指令:
function myFunction($arg)
{
   //
对$arg做一些基本处理例如从数据库检索数据
   //
然后把结果赋值给变量,例如$newContent
  
   // 实例化xajaxResponse
对象
   $objResponse = new
xajaxResponse();
  
   //
添加指令到响应之中,用于指派
  
//指定元素(例如id=SomeElementId)的innerHTML属性的新的内容
  
$objResponse->addAssign(SomeElementId,innerHTML,
$newContent);
  
   //返回xajaxResponse
对象生成的XML响应
   return
$objResponse->getXML();
}

在你的脚本输出任何信息之前,调用xajax用于接管请求:
$xajax->processRequests();

在页面的 <head></head> 标签之间,
告诉xajax生成所必需的JavaScript:
<?php $xajax->printJavascript(); ?>

在程序中,从JavaScript事件或者函数调用前面注册的函数:
<div id=SomeElementId></div>
<button xajax_myFunction(SomeArgument);>
Include the xajax class library:
require_once(xajax.inc.php);
Instantiate the xajax object:
$xajax = new xajax();
Register the names of the PHP functions you want to be able to call
through xajax:
$xajax->registerFunction(myFunction);
Write the PHP functions you have registered and use the
xajaxResponse object to return XML commands from them:
function myFunction($arg)
{
  // do some stuff based on $arg like query data
from a database and
  // put it into a variable like $newContent

  // Instantiate the xajaxResponse object
  $objResponse = new xajaxResponse();

  // add a command to the response to assign
the innerHTML attribute of
  // the element with id=SomeElementId to
whatever the new content is
 
$objResponse->addAssign(SomeElementId,innerHTML,
$newContent);

  //return the XML response generated by the
xajaxResponse object
  return $objResponse->getXML();
}
Before your script sends any output, have xajax handle any
requests:
$xajax->processRequests();
Between your <head></head> tags, tell xajax to generate
the necessary JavaScript:
<?php $xajax->printJavascript(); ?>
Call the function from a JavaScript event or function in your
application:
<div id=SomeElementId></div>
<button xajax_myFunction(SomeArgument);>
 
就这么简单. xajax 会处理其他所有的事情.
你所要做的主要工作就是编写PHP函数,然后从函数之中返回xajax的XML响应。而后者通过xajaxResponse类可以非常简单的生成.

That’s it. xajax takes care of most everything else. Your biggest
task is writing the PHP functions and returning xajax XML responses
from them– which is made extremely easy by the xajaxResponse
class. 

历史上的今天

2017年:2017年的几个小目标(51条评论)

2014年:看电影021(44条评论)

2011年:快乐星期天136期:来来来,让我们一起打飞机(46条评论)

2009年:《第九突击队(9-ya rota)》(0条评论)

2009年:原来QQ邮箱有英文版啊(2条评论)

发表评论

您的昵称 *

您的邮箱 *

您的网站