快速进入Ajax开发的实例解说(1)(3)
| // we'll generate XML output header('Content-Type: text/xml'); // generate XML header echo ''; // create the echo ' // retrieve the user name $name = $_GET['name']; // generate output depending on the user name received from client $userNames = array('CRISTIAN', 'BOGDAN', 'FILIP', 'MIHAI', 'YODA'); if (in_array(strtoupper($name), $userNames)) echo 'Hello, master ' . htmlentities($name) . '!'; else if (trim($name) == '') echo 'Stranger, please tell me your name!'; else echo htmlentities($name) . ', I don't know you!'; // close the echo ' ?> |
5. 现在你就可以使用你喜欢的浏览器,通过装载http://localhost/ajax/quickstart来访问新写的程序。装载这个页面,你将得到像图1和图2那样的页面。如果你在运行这个程序的过程中遇到任何问题,检查你是否按照附录A中描述的那样安装和配置。大多数错误的发生都是诸如输入之类的小错误。
刚才发生了什么?
下面就是比较有趣的部分。你将理解在那些代码里发生了什么。让我们从用户首先交互的文件,index.html,开始。这个文件引用了一个神奇的名为quickstart.js的JavaScript文件,并且建立了一个非常简单的客户端交换。下面的代码片断是取自index.html,注意下用粗体标出的元素。
Server wants to know your name: |
当页面装载的时候,quickstart.js中一个名为process()的函数就会被执行。这以某种方式引起元素被服务器上的消息填充。在看process()函数内部发生了什么之前让我们看看在服务器内发生了什么。在服务器上,你有一个名为quickstart.php的脚本。它用来创建发往客户端的XML消息。这个XML消息包含一个 如果从客户端获取的信息是空的,那么返回的信息就是“Stranger,please tell me your name!”。如果名字是Cristian,Bogdan,Filip,Mihai或者Yoda,服务器返回“Hello,master 加粗的部分把输出标记为XML文档,这很重要。因为客户端期待接受XML(如果头没有设置Content-Type为text/xml,那么客户端解析XML的API会抛出一个错误)。在设置头之后,代码就开始连接字符串生成XML响应。实际要返回给客户端的信息被封装在 用户输入的内容(假定是用户的名字)通过使用GET参数从客户端传送到服务器端。当把这个信息回传给客户端时,我们使用了PHP里的函数htmlentities来取代HTML代码里的特殊字符(如&,>),以确保在浏览器里能够安全地显示这些信息,消除潜在的问题和安全风险。
... message the server wants to transmit to the client ...
quickstart.php脚本的开头产生XML文档的头和
Mickey Mouse, I don't know you!
// we'll generate XML output
header('Content-Type: text/xml');
// generate XML header
echo '';
// create the
echo '
// retrieve the user name
$name = $_GET['name'];
// generate output depending on the user name received from client
$userNames = array('CRISTIAN', 'BOGDAN', 'FILIP', 'MIHAI', 'YODA');
if (in_array(strtoupper($name), $userNames))
echo 'Hello, master ' . htmlentities($name) . '!';
else if (trim($name) == '')
echo 'Stranger, please tell me your name!';
else
echo htmlentities($name) . ', I don't know you!';
// close the
echo '






