`

[转]xajax中文手册(HonestQiao第一版,FlyingHail修改版)

阅读更多

引用地址:http://blog.72ga.com/?action=show&id=8

  最近要用xajax,从网上找到了HonestQiao(乔楚)翻译的xajax中文手册第一版(因为引用地方太多,最初出处不可考了- -b),发现对应当前的版本已经不是太合适了,所以参考着xajax的wiki对该文进行了一些修改和补充:补充xajaxResponse类中方法的说明、添加“如何创建Loading...信息?”、“如何改变xajax的编码设置?”两项,都不是完整的原文翻译,主要是在个人理解的基础上描述的。

原文:http://xajax.sourceforge.net/
英文原版:Copyright © 2005 J. Max Wilson
简体中文翻译:HonestQiao(乔楚)/2005-12-7 17:23/(第一版)
修改&补充:FlyingHail/2006.08.01 16:43/参考:http://wiki.xajaxproject.org/

* 什么是xajax?
* xajax如何工作?
* 为什么我要使用xajax代替其他PHP的Ajax库?
* 如何在我的PHP脚本之中使用xajax?
* 如何更新内容?
* 如何处理表单数据?
* 如何给xajax增加定制功能?
* 如何创建Loading...信息?
* 如何改变xajax的编码设置?
* 我能在私有或者收费产品之中使用xajax吗?

什么是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:

  1.
  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:

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

   然后你可以使用在header模版之中使用
   
SMARTY:

  1.
  {$xajax_javascript}

   从而把xajax应用到你的站点.

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

1. 包含xajax类库:

  
PHP:

  1.
  require_once("xajax.inc.php");

2. 实例化xajax 对象:

  
PHP:

  1.
  $xajax = new xajax();

3. 注册你需要通过xajax调用的PHP函数的名称:

  
PHP:

  1.
  $xajax->registerFunction("myFunction");

4. 编写注册的PHP函数,并且在函数之中使用xajaxResponse 对象返回XML指令:
PHP:

  1.
  function myFunction($arg)
  2.
  {
  3.
    // 对$arg做一些基本处理例如从数据库检索数据
  4.
    // 然后把结果赋值给变量,例如$newContent
  5.
  
  6.
    // 实例化xajaxResponse 对象
  7.
    $objResponse = new xajaxResponse();
  8.
  
  9.
    // 添加指令到响应之中,用于指派
  10.
    // 指定元素(例如id="SomeElementId")的innerHTML属性的新的内容
  11.
    $objResponse->addAssign("SomeElementId","innerHTML", $newContent);
  12.
  
  13.
    //返回xajaxResponse 对象生成的XML响应
  14.
    return $objResponse;
  15.
  }

5. 在你的脚本输出任何信息之前,调用xajax用于接管请求:
PHP:

  1.
  $xajax->processRequests();

6. 在页面的 标签之间, 告诉xajax生成所必需的Javascript:
PHP:

  1.
  <?php $xajax->printJavascript(); ?>

7. 在程序中,从Javascript事件或者函数调用前面注册的函数:
HTML:

  1.
  <div id="SomeElementId"></div>
  2.
    <button onclick="xajax_myFunction(SomeArgument);">

  就这么简单. xajax 会处理其他所有的事情. 你所要做的主要工作就是编写PHP函数,然后从函数之中返回xajax的XML响应。而后者通过xajaxResponse类可以非常简单的生成.

如何更新内容?
  xajax最富有特色的功能或许就是xajaxResponse类. 其他的Ajax库需要你自己编写Javascript的回调句柄去处理一个异步请求返回的数据并更新内容. xajax, 从另外一个角度来说, 允许你使用PHP简单的控制内容. xajaxResponse 让你在PHP函数之中创建XML指令返回给你的程序. XML将被xajax的消息分析器解析,指令将告诉xajax如何更新程序的内容和状态. xajaxResponse类目前提供了以下指令:
* addConfirmCommands (integer $iCmdNumber, string $sMessage)
弹出一个显示内容为$sMessage的confirm确认提示框
如果点击确认框中的取消将跳过后面的$iCmdNumber条命令
PHP:

  1.
  $objResponse->addConfirmCommands(1, "Do you want to preview the new data?");

* addAssign(string $sTarget, string $sAttribute, string $sData)
给ID为$sTargetId的元素的$sAttribute属性赋值$sData
PHP:

  1.
  $objResponse->addAssign("contentDiv","innerHTML","Some Text");
  2.
  $objResponse->addAssign("checkBox1","checked","true");

* addAppend(string $sTarget, string $sAttribute, string $sData)
给ID为$sTargetId的元素的$sAttribute属性后面追加值$sData
PHP:

  1.
  $objResponse->addAppend("contentDiv","innerHTML","Some Text");

* addPrepend(string $sTarget, string $sAttribute, string $sData)
给ID为$sTargetId的元素的$sAttribute属性前面添加值$sData
PHP:

  1.
  $objResponse->addPrepend("contentDiv","innerHTML","Some Text");

* addReplace(string $sTarget, string $sAttribute, string $sSearch, string $sData)
替换命名为$sTargetId的元素的$sAttribute属性的值之中的$sSearch为$sData
PHP:

  1.
  $objResponse->addReplace("contentDiv","innerHTML","text","<strong>text</strong>");

* addClear(string $sTarget, string $sAttribute)
清空命名为$sTargetId的元素的$sAttribute属性的值
PHP:

  1.
  $objResponse->addClear("Input1","value");

* addAlert(string $sMsg)
显示一个内容为 $sMsg 的警告框(Javascript的Alert)
PHP:

  1.
  $objResponse->addAlert("This is some text");

* addRedirect(string $sURL)
转跳到另一个地址$sURL,使用addScript()方法实现
PHP:

  1.
  $objResponse->addRedirect("http://www.xajaxproject.org");

* addScript(string $sJS)
执行Javascript代码 $sJS
PHP:

  1.
  $objResponse->addScript("var txt = prompt('get some text');");

* addScriptCall()
执行Javascript代码中的函数,第一个参数表示Javascript函数名,后面的参数为Javascript函数的参数
PHP:

  1.
  $objResponse->addScriptCall("myJSFunction", "arg 1", "arg 2", 12345);

* addRemove(string $sTarget)
从你的页面之中移除ID为$sTarget的元素
PHP:

  1.
  $objResponse->addRemove("Div2");

* addCreate(string $sParent, string $sTag, string $sId)
在已经存在的ID为$sParentId的元素内添加一个名叫$sTag的子元素,并且把它的id赋值为$sId。INPUT类型的元素须使用addCreateInput()方法.。
PHP:

  1.
  $objResponse->addCreate("childDiv", "h3", "myid");

* addInsert(string $sBefore, string $sTag, string $sId)
在已经存在的ID为$sBefore的元素前面添加一个名叫$sTag的元素,并且把它的id赋值为$sId。
PHP:

  1.
  $objResponse->addInsertAfter("parentDiv", "h3", "myid");

* addInsertAfter(string $sAfter, string $sTag, string $sId)
在已经存在的ID为$sBefore的元素后面添加一个名叫$sTag的元素,并且把它的id赋值为$sId。
PHP:

  1.
  $objResponse->addInsert("parentDiv", "h3", "myid");

* addCreateInput(string $sParent, string $sType, string $sName, string $sId)
在已经存在的ID为$sParent的元素内添加一个类型为$sType,Name为$sName,ID为$sId的INPUT元素。
PHP:

  1.
  $objResponse->addCreateInput("form1", "text", "username", "input1");

* addInsertInput(string $sBefore, string $sType, string $sName, string $sId)
在已经存在的ID为$sBefore的元素前面添加一个类型为$sType,Name为$sName,ID为$sId的INPUT元素。
PHP:

  1.
  $objResponse->addInsertInput("input5", "text", "username", "input1");

* addInsertInputAfter(string $sAfter, string $sType, string $sName, string $sId)
在已经存在的ID为$sAfter的元素后面添加一个类型为$sType,Name为$sName,ID为$sId的INPUT元素。
普通文本
PHP:

  1.
  $objResponse->addInsertInputAfter("input7", "text", "email", "input2");

* addEvent(string $sTarget, string $sEvent, string $sScript)
为ID是$sTarget的元素后面添加一个名为$sEvent的事件,其执行的脚本为$sScript
普通文本
PHP:

  1.
  $objResponse->addEvent("contentDiv", "onclick", "alert(\'Hello World\');");

* addHandler(string $sTarget, string $sEvent, string $sHandler)
为ID是$sTarget的元素名为$sEvent的事件添加一个句柄$sHandler(即Javascript函数名),可以为一个事件添加多个句柄。
PHP:

  1.
  $objResponse->addHandler("contentDiv", "onclick", "content_click");

# addEvent与addHandler的区别:
addEvent关心的是事件被触发,即onclick中的on-,addHandler关心的是事件触发了什么操作,即onclick中的click。
其差别类似于为一个元素定义事件属性和使用addEventListener()方法定义一个事件句柄。

* addRemoveHandler(string $sTarget, string $sEvent, string $sHandler)
删除ID是$sTarget的元素名为$sEvent的事件中的句柄$sHandler。
PHP:

  1.
  $objResponse->addRemoveHandler("contentDiv", "onclick", "content_click");

* addIncludeScript(string $sFileName)
包含名为$sFileName的Javascript文件。
PHP:

  1.
  $objResponse->addIncludeScript("functions.js");

一个独立的XML响应可能包含多个指令, 他们将按照加入响应的顺序执行. 让我们用一个用户在你的程序之中点击按钮为例来进行说明. Onclick事件调用PHP函数对应的javascript封装.这个封装通过XMLHttpRequest发送异步请求到服务器给xajax调用 PHP函数. PHP函数做了一次数据库查询, 处理了一些数据, 或者序列化. 然后你使用xajaxResponse类生成包含多个指令的xajax的XML响应 ,并回送给xajax的消息分析器执行:
PHP:

  1.
  $objResponse = new xajaxResponse();
  2.
  $objResponse.addAssign("myInput1","value",$DataFromDatabase);
  3.
  $objResponse.addAssign("myInput1","style.color","red");
  4.
  $objResponse.addAppend("myDiv1","innerHTML",$DataFromDatabase2);
  5.
  $objResponse.addPrepend("myDiv2","innerHTML",$DataFromDatabase3);
  6.
  $objResponse.addReplace("myDiv3","innerHTML","xajax","<strong>xajax</strong>");
  7.
  $objResponse.addScript("var x = prompt("Enter Your Name");");
  8.
  return $objResponse;

xajax消息分析器将会解析XML消息,并执行以下工作:

2. id为myInput1的元素的值将被赋值为 $DataFromDatabase的数据.
3. id为myInput1的元素的颜色将会变为red.
4. $DataFromDatabase2的数据会被追加到id为myDiv1的元素innerHTML之中.
5. $DataFromDatabase3的数据会被预先赋值给id为myDiv2的元素innerHTML之中.
6. id为myDiv3的元素的innerHTML 之中所有的"xajax"将被替换为"xajax"; 使得所有的单词 xajax 显示加粗.
7. 一个提示框将会显示,用来询问用户姓名,从提示框返回的值会被命名为x的javascript变量接收.

  所有这些都由构成的PHP函数在服务器端执行并返回xajax的XML响应.

如何处理表单数据?
  xajax使得异步处理表单数据非常非常的简单. xajax.getFormValues()方法会自动的从表单提取数据,并作为一个参数提交给xajax注册的PHP函数.
  xajax.getFormValues() 仅仅需要一个参数, 可以是你需要处理得表单的id, 或者是一个实际的表单对象. 你也可以使用xajax.getFormValues作为一个参数给xajax 函数, 例如:
PHP:

  1.
    xajax_processFormData(xajax.getFormValues('formId'));

  xajax 会生成一个与表单数据对应的请求字符串给xajax服务器解析,然后以一个与表单数据对应的数组传递给PHP函数,就想你提交表单使用PHP的$_GET数组那么简单.
  xajax可以处理类似普通多维数组或者联合数组(哈希数组)等形式的复杂输入名字. 例如, 如果一个表单有三个多选框(checkboxes)并且都命名为 "checkbox[]", 但是值分别为 "check1", "check2", 和 "check3", 然后使用 xajax.getFormValues 函数作为参数传递给xajax 函数, 则 PHP 函数会接受到一个如下的数组:
PHP:

  1.
  array (
  2.
  'checkbox' =>
  3.
  array (
  4.
  0 => 'check1',
  5.
  1 => 'check2',
  6.
  2 => 'check3',
  7.
  ),
  8.
  )

作为函数参数的数组的结构与传统意义上提交表单之后的$_GET数组的结构相同. 你可以访问数组之中的checkbox 的数据: $aFormData['checkbox'][0]

如何给xajax增加定制功能?
  xajax可以使用各种附加的用户定制功能进行扩展. 正因为xajax是完全面向对象的,并且可以使用xajaxResponse的addScript()方法,所以他具有无限扩展的可能. 你可以创建你自己的xajax响应类,来继承xajaxResponse 类以及它的方法,并加上你自己定制的响应. 让我们用一个定制的增加选择组合框(select combo boxes)选项的响应指令的例子来说明. 你可以象下面这样扩展xajaxResponse 类:
PHP:

  1.
  class myxajaxResponse extends xajaxResponse
  2.
  {
  3.
  function addAddOption($sSelectId, $sOptionText, $sOptionValue)
  4.
  {
  5.
  $sScript = "var objOption = new Option('".$sOptionText."','".$sOptionValue."');";
  6.
  $sScript .= "document.getElementById('".$sSelectId."').options.add(objOption);";
  7.
  $this->addScript($sScript);
  8.
  }
  9.
  }

  现在, 取代xajaxResponse 对象的初始化, 把你自己的 myxajaxResponse 对象的初始化定义到你的 xajax PHP 函数之中:
PHP:

  1.
  $objResponse = new myxajaxResponse();
  2.
  $objResponse->addAssign("div1", "innerHTML", "Some Text");
  3.
  $objResponse->addAddOption("select1","New Option","13");
  4.
  
  5.
  return $objResponse;

  被调用时,这个方法将会发送需要的javascript到页面并执行. 当然你也有另外一种做法Alternatively, 你可以在你的程序之中创建一个如下的javascript函数:
JavaScript:

  1.
  <script type="text/javascript">
  2.
  function addOption(selectId,txt,val)
  3.
  {
  4.
  var objOption = new Option(txt,val);
  5.
  document.getElementById(selectId).options.add(objOption);
  6.
  }
  7.
  </script>

  并且使用addScript() 调用这个方法:
PHP:

  1.
  $objResponse->addScript("addOption('select1','New Option','13');");

如何创建Loading...信息?
  xajax提供了一个简单但是重要的功能,那就是在xajax 进行服务器调用时模拟反馈用的“Loading...”信息。xajax已经定义了两个 Javascript函数:xajax.loadingFunction()和xajax.doneLoadingFunction(),你可以用你自己定义的Javascript函数来重新定义它们以满足项目的需要,例如:
JavaScript:

  1.
  xajax.loadingFunction = myCustomLoadingFunction;

或者
JavaScript:

  1.
  xajax.loadingFunction = function(){xajax.$('loadingBar').style.display='block';};

分享到:
评论

相关推荐

    Xajax中文手册(第一版).pdf

    ### Xajax中文手册知识点概述 #### 一、Xajax简介 **Xajax**是一个开源的PHP类库,它能够帮助开发者轻松地结合HTML、CSS、JavaScript和PHP来创建功能强大的基于Web的AJAX应用程序。使用Xajax开发的应用程序能够在...

    Xajax中文手册(第一版)

    xajax 是一个基于 PHP 的开源库,专门设计用于构建 AJAX(Asynchronous JavaScript and XML)应用程序。它使得开发者能够在不刷新整个网页的情况下,实现与服务器端的异步通信,调用 PHP 函数并更新页面内容。这极大...

    Xajax中文手册

    ### Xajax中文手册详解 #### 一、Xajax概述 Xajax是一款开源的PHP类库,旨在简化HTML、CSS、JavaScript和PHP之间的交互,助力开发者轻松构建强大的基于Web的Ajax应用。通过Xajax,Web应用可以实现无刷新更新,即在...

    xajax chm 手册 中文

    xajax chm 手册 中文

    PHP安全文档和Xajax中文手册

    Xajax中文手册可能会包含以下内容: 1. Xajax基础:介绍如何安装Xajax,创建基本的AJAX功能,以及如何与PHP后端交互。 2. 函数和对象:详细解释Xajax的核心函数和对象,如`xajax_function`、`xajaxResponse`等。 ...

    xajax,中文手册

    5. **简易的异步表单处理**:Xajax提供了一个简单而强大的异步表单处理机制,通过`xajax.getFormValues()`方法,开发者可以轻松获取表单中的值,并作为参数传递给Xajax异步处理函数,处理复杂输入元素名称产生的多维...

    xajax 手册

    首先,xajax 的易用性是一大亮点。它提供了一套简洁的 API,允许开发者轻松地将 PHP 函数绑定到客户端的 JavaScript 事件,实现异步调用。这减少了编写大量低级代码的必要,提高了开发效率。同时,xajax 自动处理 ...

    xajax分页显示

    // 初始化加载第一页 loadPage(1); ``` **5. 创建分页导航** 最后,我们需要创建分页导航条,让用户可以方便地切换页码: ```html &lt;!-- 根据总页数动态生成页码链接 --&gt; &lt;!-- ... --&gt; // 获取总页数的XAJAX...

    Xajax学习资料、php的ajax框架

    Xajax是一款基于PHP的AJAX框架,它允许开发者在后台处理数据并动态更新网页内容,无需刷新整个页面。AJAX(Asynchronous JavaScript and XML)技术是互联网开发中的一个重要概念,它提高了用户体验,使得用户可以与...

    xajax_0.2.5.zip_ajax_xajax_xajax 0

    xajax 0.2.5是这个库的一个特定版本,发布于某个时间点,可能包含了一些特定的修复和功能改进。在这个版本中,开发者可以找到用于实现Ajax功能的各种函数和类。 **xajax 0.2.5 版本特性** 1. **易用性**:xajax库...

    xajax0.2.4

    这个压缩包包含了xajax的源代码以及中文手册,对于初学者和有经验的开发者来说都是一个宝贵的资源。 首先,我们要理解xajax的核心功能。xajax是一个轻量级的PHP库,它使服务器端的PHP脚本能够与客户端的JavaScript...

    xajax.2.5 b3

    `xajax.2.5 b3` 版本是该框架的一个早期版本,即第二点五版的第三个测试版,它包含了一些优化和改进,以适应当时的开发需求。 在使用xajax时,主要涉及以下几个核心知识点: 1. **Ajax技术**:Ajax(Asynchronous ...

    php jquery js开发手册中文+中文配置

    1 Ajax中文手册(快速上手) 2 Apache中文配置 3 CSS中文手册 4 DOM文档对象中文手册 5 DOS实例手册 6 javascript5.5 7 jQueryAPI_CHM 8 mysql 9 mysql配置 ...15 xajax中文手册(教程) 16 XML-and-PHP

    Ajax 框架 xAjax下载

    **Ajax 框架 xAjax 入门指南** Ajax(Asynchronous JavaScript and XML)技术的出现,极大地提升了Web应用程序的用户体验,它允许页面在不重新加载整个页面的情况下与服务器进行异步交互。xAjax是一个基于PHP的开源...

    [其他类别]xajax 0.5 Beta4_0.5beta-xajax.zip

    在xAjax 0.5 Beta4版本中,它提供了一种简单而灵活的方式来实现动态网页交互,使得开发者无需刷新整个页面就能更新部分网页内容。这个版本是0.5系列的Beta4测试版,意味着它可能包含一些新功能、改进和修复的bug,但...

    xajax-0.6-beta1.zip_xajax comet

    5. **测试框架**:为了确保代码质量,`tests`目录包含了Xajax的单元测试用例,开发者可以通过这些测试确保自己的代码与Xajax兼容并运行正常。 6. **核心组件**:`xajax_core`包含Xajax的基本组件,如处理器、响应...

    xajax实例!!!

    5. **社区支持**:作为开源项目,xajax 有一个活跃的社区,提供文档、示例和论坛支持,帮助开发者解决问题和分享经验。 6. **可扩展性**:xajax 允许开发者添加新的处理程序、插件和功能,以满足特定项目的需求。 ...

    xajax_0.5_minimal.zip

    "xajax_0.5_minimal.zip"这个压缩包提供了一个精简版的xAjax库,特别适合那些希望在项目中集成AJAX功能但又不想引入过多额外代码的开发者。这个版本去除了非必要的示例文件,只保留了核心组件,确保了文件体积最小化...

    dasai.tar.gz_xajax

    本文将深入探讨这个名为“dasai.tar.gz_xajax”的项目,通过其描述和标签,我们可以推测这是一个基于PHP和XAJAX技术的初级实践,旨在实现一种简单的、易于使用的Web应用。 PHP(Hypertext Preprocessor)是一种广泛...

Global site tag (gtag.js) - Google Analytics