当前位置: 首页 > 图文教程 > 网络编程 > PHP > 结合AJAX进行PHP开发之入门(4)

PHP
php中目录,文件操作详谈
理解PHP5中static和const关键字的区别
php中支持多种编码的中文字符串截取函数!
关于BIG5-HKSCS的解决方法
自动生成文章摘要的代码[PHP 版本]
完美解决dedecms中的[html][/html]和[code][/code]问题
不错的dedecms修改实用集锦
PHP的分页功能
dedecms中显示数字验证码的修改方法
dedecms中常见问题修改方法总结
用PHP写的MySQL数据库用户认证系统代码
收集的PHP中与数组相关的函数
PHP中动态显示签名和ip原理
实现dedecms全站URL静态化改造的代码
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
在任意字符集下正常显示网页的方法一
在任意字符集下正常显示网页的方法二(续)
经典的PHPer为什么被认为是草根?
dedecms系统常用术语汇总
一篇入门的php Class 文章

结合AJAX进行PHP开发之入门(4)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 191 ::
收藏到网摘: n/a

将 Sajax 连接到相册

  利用刚刚创建的代码,我们将用 Sajax 迅速把相册从多页面应用程序转化成活动Ajax 应用程序。

  因为相册主要有两个函数,get_table() 和 get_image(),这也是需要用 Sajax 导出的全部函数。事实上,为了通过 Sajax 调用这些函数,这些函数本身基本上不需要修改,很快我们就会看到,我们只需要修改生成的链接即可。

  清单 9. Sajax 相册的头部

<?php
require("Sajax.php");

function get_image () { } // Defined later
function get_thumbs_table () { } // Defined later

// Standard Sajax stuff. Use Get, and export two
// main functions to javascript
$sajax_request_type = "GET";
sajax_init();
sajax_export("get_thumbs_table", "get_image");
sajax_handle_client_request();
?>

  对于本文而言,文档主体部分很简单。我们将使用 div 和 window 的 id 来显示服务器的输出。

  清单 10. 显示服务器输出的 div 和 window id

<body>
<h1>Sajax photo album</h1>
<div id="window"></div>
</body>

  最后还要编写 Javascript 回调函数。该例中,因为所有的服务器输出都直接输出到 window div 标记,所以可以重复使用简单的回调函数。将回调函数添加到 Sajax 函数调用中,就可以得到头(head)。

  清单 11. 简单的头

<head>
<title>Creating a Sajax photo album</title>
<style type="text/css">
body { text-align: center }
div#window { margin: 0 auto 0 auto; width: 700px;
padding: 10px; border: 1px solid #ccc; background: #eee; }
table.image_table { margin: 0 auto 0 auto; }
table.image_table td { padding: 5px }
table.image_table a { display: block; }
table.image_table img { display: block; width: 120px
padding: 2px; border: 1px solid #ccc; }
img.full { display: block; margin: 0 auto 0 auto;
width: 300px; border: 1px solid #000 }
</style>

<script language="javascript">
<? sajax_show_javascript(); ?>

// Outputs directly to the "window" div
function to_window(output) {
 document.getElementById("window").innerHTML = output;
}

window.onload = function() {
 x get table to window);
};

</script>
</head>

  最后一步是保证应用程序中的所有链接都是自定义的 Sajax调用。只需要取上一节中的代码并作如下替换:href="index.php?start=0&step=5" 变为onclick="x_get_table(0, 5, to_window)",href="expand.php?index=0" 变为onclick="x_get_image(0, to_window)"。

  并在相应的函数中做同样修改:get_image_link() 和 get_table_link()。这样向 Sajax 的转化就完成了(如图 6所示)。所有链接都变成了与远程 PHP 调用对应的 Javascript 调用,PHP 使用 Javascript 响应处理程序to_window() 直接输出到页面。

  整个应用程序都包含在一个页面中,还可以把其余功能(get_table()、get_image() 等)放在不能从 Web 访问的单独的库文件中。在大多数 Ajax应用程序中,每个发往服务器的请求都需要由单独的脚本处理,或至少需要编写一个非常庞大的处理程序脚本来重定向请求。将所有这些文件都集中到一起可能非常麻烦。使用 Sajax 永远只需要一个文件,在该文件中只需定义我们使用的函数即可。Sajax 代替了处理程序脚本。


  可以看到 URL 仍然保持不变,并带来了更多愉快的用户体验。window div 显示在一个灰色的框中,通过 Sajax生成的内容非常清楚。脚本不一定要知道自身或者它在服务器上的位置,因为所有的链接最终都成为直接对页面自身的 Javascript调用。因此我们的代码能够很好的模块化。我们只需要保持 Javascript 和 PHP函数在同一个页面上即可,即使页面位置发生了变化也没有关系。