18.4.4 xajax应用实例
这节通过一个xajax的应用实例,使读者了解xajax是如何在PHP程序中实现AJAX应用的。这个实例将在页面显示由服务器端生成XML响应,这个响应以XML指令的形式返回至浏览器端,xajax消息分析器获得该响应后,通知xajax如何更新页面。这个实例中,仅仅是将XML指令原封不动地显示到页面上。代码18-6.php是该应用实例的完整程序。
代码18-6 xajax应用实例18-6.php
01 <?php
02 require_once("xajax/xajax.inc.php");
03
04 $xajax=new xajax();//实例化xajax对象
05
06 //$xajax->debugOn();//打开ajax调试功能
07
08 //注册一个xajax调用的php函数名(与javascript中的函数名xajax_showOutput相对应)
09 $xajax->registerFunction("showOutput");
10
11 //编写上面已经注册的php函数,在此函数中用xajaxResponse对象来返回XML指令集
12 function showOutput()
13 {
14 $testResponse=new xajaxResponse();
15 $testResponse->addAlert("Hello");
16
17 $testResponse2=new xajaxResponse();
18 $testResponse2->loadXML($testResponse->getXML());
19 $testResponse2->addReplace("this","is","a","replacement");
20 $testResponseOutput=htmlspecialchars($testResponse2->getXML());
21
22 $objResponse=new xajaxResponse();
23
24 //使用xajaxResponse对象的addAssign方法添加XML指令,
25 //该指令将id为submittedDiv的元素的innerHTML属性更新为$testResponseOutput
26 $objResponse->addAssign("submittedDiv","innerHTML",$testResponseOutput);
27 return$objResponse;
28 }
29
30 $xajax->processRequests();//在脚本传送出任何东西前,xajax都要处理所有请求
31 ?>
32
33 <html>
34 <head>
35 <meta http-equiv="Content-Type"content="text/html;charset=utf-8"/>
36 <title>18-6.php-xajaxResponse Test</title>
37 <?php
38
39 //这代码使xajax对象可以生成所必需的JavaScript
40 $xajax->printJavascript("xajax/")
41 ?>
42 </head>
43 <body>
44
45 <!--在这里调用-->
46 <p><div onclick="xajax_showOutput();">单击这里显示响应XML</div></p>
47 <div id="submittedDiv">这里将被响应的XML指令所替换</div>
48
49 </body>
50 </html>
使用浏览器访问18-6.php,会看到如图18-4所示的效果。当单击页面上第1行文字时,第2行文字会被替换成XML响应指令,如图18-5所示。
【代码解析】这段代码按照18.4.3所述步骤,在PHP程序中使用xajax。这里对程序中的函数showOutput()做一些简要解释。程序就是在该函数中实现了XML指令。代码第15行,使用xajaxResponse类的对象testResponse调用其方法addAlert()来生成一个警告对话框的XML指令。这段指令在代码第18行被第2个xajaxResponse类对象testResponse2载入。
接下来,程序再次创建一个xajaxResponse类的对象objResponse,通过该对象调用addAssign()方法,通过该方法创建XML指令来更新页面id为submittedDiv元素的属性值。