通过 PHP 和 Sajax 使用 Ajax(三)

ajax

 

通过 PHP 和 Sajax 使用 Ajax (三)
简单 Ajax 工具包如何把服务器端 PHP 与 JavaScript 集成

Tyler Anderson , 自由作者, Stexar 公司
2006 年 05 月 11 日

与 Sajax 集成

这一节将介绍什么是 Sajax,它如何模拟异步 JavaScript,以及当前的 Ajax 应用程序怎样转化成 Sajax 应用程序。

什么是 Sajax?

简单 Ajax 工具包(Sajax)是同步的异步 JavaScript 和 XML。同步的原因是,当前应用程序中使用的 XML HTTP 对象的细节,通过使用 Sajax.php 库文件而被抽象出去。这使开发 Ajax 应用程序变得更加容易,因为编程出错的机会降低了。链接也变得更加容易,因为它们将只包含函数调用。基本上,Sajax 是一种制作 Ajax 应用程序的模块化方式,通过预定的、动态的函数调用,使得应用程序的开发过程更加平滑。

模拟异步 JavaScript

在这一节中,要使用 Sajax 的几个方面来模拟 Ajax。其中一个是 sajax_init,它初始化 Sajax 库。接下来是 sajax_export 函数,要调用它来通知 Sajax 有一个“面板”内容区,稍后会为它创建对应的 JavaScript 函数。针对应用程序需要的动态内容区的多少,可以根据需要为每个动态内容区调用 sajax_export,次数不限。

下一个要使用的函数是 sajax_handle_client_request。这个函数初始化 Sajax 的数据结构,让应用程序准备好处理客户请求。还要设置 $sajax_remote_uri。这是应用程序发送客户请求的目标 URL,与 Ajax 应用程序的链接中嵌入的 URL 类似。

最后,需要用 sajax_show_javascript 函数把 Sajax JavaScript 函数包含在 JavaScript 中。

幕后发生了什么?

现在会发生什么?在幕后,Sajax 起的作用实际与 Ajax 相同。但是,Sajax 会替您设置 XML HTTP 对象,从而简化开发工作。它允许应用程序使用 JavaScript 函数用一种模块化的方式拥有多个内容区。Sajax 包使得 Ajax 开发更有效率,同时具有同样的幕后功能。

初始化 Sajax

现在开始 Sajax 应用程序。请拷贝 ajax-app.php 文件并把拷贝改名为 sajax-app.php。把文件放在与 ajax-app.php 文件相同的目录中。添加以下代码到文件开始:

清单 13. 初始化 Sajax

     
<?
require("Sajax.php");

$sajax_remote_uri =
    "http://localhost.localdomain/ajax-sajax/panels-sajax.php";
sajax_init();
sajax_export("panels");
sajax_handle_client_request();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
...

首先,需要设置远程 URL。然后需要初始化 Sajax 并导出“panels”。这对 Sajax 进行初始化,允许稍后创建的 JavaScript 函数去处理与“panels”内容相关的请求。

修改链接

链接现在需要包含函数,以便把面板 ID 传递给对应的 JavaScript 函数。

清单 14. 应用程序中的面板链接

     
<?php require('content/header.html'); ?>

<span >Managing content</span>
<?php require('content/between-link.html'); ?>

<span >Adding content</span>
<?php require('content/between-link.html'); ?>

<span >Saving new content</span>
<?php require('content/between-link.html'); ?>

<span >Editing content</span>
<?php require('content/between-link.html'); ?>

<span >Saving edited content</span>
<?php require('content/between-link.html'); ?>

<span >Avoid adding duplicates</span>
<?php require('content/between-link.html'); ?>

<span >Avoid editing a page
                            that doesn't exist</span>
<?php require('content/between-link.html'); ?>

<span >Deleting content</span>
<?php require('content/between-link.html'); ?>

<span >Serving a page</span>
<?php require('content/between-link.html'); ?>

<span >Pulling it together:
                            The CMS control page</span>

<?php require('content/pre-content.html'); ?>
...

点击链接会调用一个不同的 JavaScript 函数,接下来会添加这个函数。

替换 JavaScript

在继续之前,请从 Ajax 应用程序删除 JavaScrip。需要添加新的函数,这些新函数和 XML HTTP 对象无关。添加以下代码代替当前的 JavaScript 函数:

清单 15. 新的 JavaScript 函数

     
...
<script type="text/javascript">
    <?php sajax_show_javascript(); ?>

    function getPanel_cb(content) {
        document.getElementById('content').innerHTML = content;
    }

    function getPanel(panel_id){
        x_panels(panel_id, getPanel_cb);
    }
</script>
...

第一行调用 sajax_show_javascript,它导入 Sajax 需要的 JavaScript 函数和其他要添加的 getPanel 函数。这些添加的 JavaScript 函数把 Sajax 应用程序的核心带到浏览器,因为浏览器首次装入页面后,PHP 就没有作用了。

返回 Sajax 内容

现在需要修改 panels-ajax.php 文件以便适应 Sajax。拷贝并重命名 panels-ajax.php 文件为 panels-sajax.php 并把它放在与其他文件相同的目录下。修改它,如清单 16 所示。

清单 16. panels-sajax.php 的修改

     
<?php

if(
通过 PHP 和 Sajax 使用 Ajax (三)
简单 Ajax 工具包如何把服务器端 PHP 与 JavaScript 集成

Tyler Anderson , 自由作者, Stexar 公司2006 年 05 月 11 日

与 Sajax 集成
这一节将介绍什么是 Sajax,它如何模拟异步 JavaScript,以及当前的 Ajax 应用程序怎样转化成 Sajax 应用程序。
什么是 Sajax?
简单 Ajax 工具包(Sajax)是同步的异步 JavaScript 和 XML。同步的原因是,当前应用程序中使用的 XML HTTP 对象的细节,通过使用 Sajax.php 库文件而被抽象出去。这使开发 Ajax 应用程序变得更加容易,因为编程出错的机会降低了。链接也变得更加容易,因为它们将只包含函数调用。基本上,Sajax 是一种制作 Ajax 应用程序的模块化方式,通过预定的、动态的函数调用,使得应用程序的开发过程更加平滑。
 
模拟异步 JavaScript
在这一节中,要使用 Sajax 的几个方面来模拟 Ajax。其中一个是 sajax_init,它初始化 Sajax 库。接下来是 sajax_export 函数,要调用它来通知 Sajax 有一个“面板”内容区,稍后会为它创建对应的 JavaScript 函数。针对应用程序需要的动态内容区的多少,可以根据需要为每个动态内容区调用 sajax_export,次数不限。
下一个要使用的函数是 sajax_handle_client_request。这个函数初始化 Sajax 的数据结构,让应用程序准备好处理客户请求。还要设置 $sajax_remote_uri。这是应用程序发送客户请求的目标 URL,与 Ajax 应用程序的链接中嵌入的 URL 类似。
最后,需要用 sajax_show_javascript 函数把 Sajax JavaScript 函数包含在 JavaScript 中。
 
幕后发生了什么?
现在会发生什么?在幕后,Sajax 起的作用实际与 Ajax 相同。但是,Sajax 会替您设置 XML HTTP 对象,从而简化开发工作。它允许应用程序使用 JavaScript 函数用一种模块化的方式拥有多个内容区。Sajax 包使得 Ajax 开发更有效率,同时具有同样的幕后功能。

初始化 Sajax
现在开始 Sajax 应用程序。请拷贝 ajax-app.php 文件并把拷贝改名为 sajax-app.php。把文件放在与 ajax-app.php 文件相同的目录中。添加以下代码到文件开始:
清单 13. 初始化 Sajax

     
<?
require("Sajax.php");

$sajax_remote_uri =
    "http://localhost.localdomain/ajax-sajax/panels-sajax.php";
sajax_init();
sajax_export("panels");
sajax_handle_client_request();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
...
 

首先,需要设置远程 URL。然后需要初始化 Sajax 并导出“panels”。这对 Sajax 进行初始化,允许稍后创建的 JavaScript 函数去处理与“panels”内容相关的请求。

修改链接
链接现在需要包含函数,以便把面板 ID 传递给对应的 JavaScript 函数。
清单 14. 应用程序中的面板链接

     
<?php require('content/header.html'); ?>

<span >Managing content</span>
<?php require('content/between-link.html'); ?>

<span >Adding content</span>
<?php require('content/between-link.html'); ?>

<span >Saving new content</span>
<?php require('content/between-link.html'); ?>

<span >Editing content</span>
<?php require('content/between-link.html'); ?>

<span >Saving edited content</span>
<?php require('content/between-link.html'); ?>

<span >Avoid adding duplicates</span>
<?php require('content/between-link.html'); ?>

<span >Avoid editing a page
                            that doesn't exist</span>
<?php require('content/between-link.html'); ?>

<span >Deleting content</span>
<?php require('content/between-link.html'); ?>

<span >Serving a page</span>
<?php require('content/between-link.html'); ?>

<span >Pulling it together:
                            The CMS control page</span>

<?php require('content/pre-content.html'); ?>
...
 
点击链接会调用一个不同的 JavaScript 函数,接下来会添加这个函数。
 
替换 JavaScript
在继续之前,请从 Ajax 应用程序删除 JavaScrip。需要添加新的函数,这些新函数和 XML HTTP 对象无关。添加以下代码代替当前的 JavaScript 函数:
清单 15. 新的 JavaScript 函数

     
...
<script type="text/javascript">
    <?php sajax_show_javascript(); ?>

    function getPanel_cb(content) {
        document.getElementById('content').innerHTML = content;
    }

    function getPanel(panel_id){
        x_panels(panel_id, getPanel_cb);
    }
</script>
...
 

第一行调用 sajax_show_javascript,它导入 Sajax 需要的 JavaScript 函数和其他要添加的 getPanel 函数。这些添加的 JavaScript 函数把 Sajax 应用程序的核心带到浏览器,因为浏览器首次装入页面后,PHP 就没有作用了。
 
返回 Sajax 内容
现在需要修改 panels-ajax.php 文件以便适应 Sajax。拷贝并重命名 panels-ajax.php 文件为 panels-sajax.php 并把它放在与其他文件相同的目录下。修改它,如清单 16 所示。
清单 16. panels-sajax.php 的修改
___FCKpd___3

这个文件将检查通过 GET 提交的变量。请注意“panels”被发送给 sajax_import 函数。这应当是 GET 数组中 rs 变量的值。如果 $_GET['rs'] 的值是 panel,那么 panel_id 变量就包含在 $_GET['rsargs'][0] 中,这是发送给 x_panels 函数的第一个参数,由 Sajax 库自动生成。
在返回适当的面板之前,代码必须输出两个字符(它们好像是 Sajax 库的一个 bug)。这两个字符不会在显示的 Web 页面的 HTML 源代码中出现。接下来,必须用 $_GET['rsargs'][0] 替换剩下的到 $_GET['panel_id'] 的引用。最后,需要把导航链接修改成看起来与 sajax-app.php 文件中修改的链接一样。把对 loadHTML 的调用换成 getPanel,要像以前一样传递 ID。
图 5. 集成了 Sajax 后 PHP 应用程序的浏览器输出示例图片URL:https://www6.software.ibm.com/developerworks/cn/education/opensource/os-phpajax/fig05.jpg
应用程序的行为和输出示例如图 5 所示,与使用 Ajax 时的输出相同。

结束语
恭喜!您用 PHP 创建了 Ajax 应用程序并把它与 Sajax 成功地集成。这个应用程序(以及日后的异步 JavaScript 应用程序)会给使用它的那些人节约许多带宽和等候页面重载的时间,因为不必为每次点击都载入整个页面,只需载入必要的内容。这将使创建交互丰富的应用程序变得更为普遍。
下载Source code for the PHP application:ftp://www6.software.ibm.com/software/developer/library/os-phpajax.sajax.source.zip
说明:本文来自:http://www.ibm.com/developerworks/cn/views/opensource/tutorials.jsp?cv_doc_id=109065版权归属IBM所有,本Blog只是处于转载学习更多技术目的
 

GET['rs'] == 'panels'){
    switch(
通过 PHP 和 Sajax 使用 Ajax (三)
简单 Ajax 工具包如何把服务器端 PHP 与 JavaScript 集成

Tyler Anderson , 自由作者, Stexar 公司2006 年 05 月 11 日

与 Sajax 集成
这一节将介绍什么是 Sajax,它如何模拟异步 JavaScript,以及当前的 Ajax 应用程序怎样转化成 Sajax 应用程序。
什么是 Sajax?
简单 Ajax 工具包(Sajax)是同步的异步 JavaScript 和 XML。同步的原因是,当前应用程序中使用的 XML HTTP 对象的细节,通过使用 Sajax.php 库文件而被抽象出去。这使开发 Ajax 应用程序变得更加容易,因为编程出错的机会降低了。链接也变得更加容易,因为它们将只包含函数调用。基本上,Sajax 是一种制作 Ajax 应用程序的模块化方式,通过预定的、动态的函数调用,使得应用程序的开发过程更加平滑。
 
模拟异步 JavaScript
在这一节中,要使用 Sajax 的几个方面来模拟 Ajax。其中一个是 sajax_init,它初始化 Sajax 库。接下来是 sajax_export 函数,要调用它来通知 Sajax 有一个“面板”内容区,稍后会为它创建对应的 JavaScript 函数。针对应用程序需要的动态内容区的多少,可以根据需要为每个动态内容区调用 sajax_export,次数不限。
下一个要使用的函数是 sajax_handle_client_request。这个函数初始化 Sajax 的数据结构,让应用程序准备好处理客户请求。还要设置 $sajax_remote_uri。这是应用程序发送客户请求的目标 URL,与 Ajax 应用程序的链接中嵌入的 URL 类似。
最后,需要用 sajax_show_javascript 函数把 Sajax JavaScript 函数包含在 JavaScript 中。
 
幕后发生了什么?
现在会发生什么?在幕后,Sajax 起的作用实际与 Ajax 相同。但是,Sajax 会替您设置 XML HTTP 对象,从而简化开发工作。它允许应用程序使用 JavaScript 函数用一种模块化的方式拥有多个内容区。Sajax 包使得 Ajax 开发更有效率,同时具有同样的幕后功能。

初始化 Sajax
现在开始 Sajax 应用程序。请拷贝 ajax-app.php 文件并把拷贝改名为 sajax-app.php。把文件放在与 ajax-app.php 文件相同的目录中。添加以下代码到文件开始:
清单 13. 初始化 Sajax

     
<?
require("Sajax.php");

$sajax_remote_uri =
    "http://localhost.localdomain/ajax-sajax/panels-sajax.php";
sajax_init();
sajax_export("panels");
sajax_handle_client_request();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
...
 

首先,需要设置远程 URL。然后需要初始化 Sajax 并导出“panels”。这对 Sajax 进行初始化,允许稍后创建的 JavaScript 函数去处理与“panels”内容相关的请求。

修改链接
链接现在需要包含函数,以便把面板 ID 传递给对应的 JavaScript 函数。
清单 14. 应用程序中的面板链接

     
<?php require('content/header.html'); ?>

<span >Managing content</span>
<?php require('content/between-link.html'); ?>

<span >Adding content</span>
<?php require('content/between-link.html'); ?>

<span >Saving new content</span>
<?php require('content/between-link.html'); ?>

<span >Editing content</span>
<?php require('content/between-link.html'); ?>

<span >Saving edited content</span>
<?php require('content/between-link.html'); ?>

<span >Avoid adding duplicates</span>
<?php require('content/between-link.html'); ?>

<span >Avoid editing a page
                            that doesn't exist</span>
<?php require('content/between-link.html'); ?>

<span >Deleting content</span>
<?php require('content/between-link.html'); ?>

<span >Serving a page</span>
<?php require('content/between-link.html'); ?>

<span >Pulling it together:
                            The CMS control page</span>

<?php require('content/pre-content.html'); ?>
...
 
点击链接会调用一个不同的 JavaScript 函数,接下来会添加这个函数。
 
替换 JavaScript
在继续之前,请从 Ajax 应用程序删除 JavaScrip。需要添加新的函数,这些新函数和 XML HTTP 对象无关。添加以下代码代替当前的 JavaScript 函数:
清单 15. 新的 JavaScript 函数

     
...
<script type="text/javascript">
    <?php sajax_show_javascript(); ?>

    function getPanel_cb(content) {
        document.getElementById('content').innerHTML = content;
    }

    function getPanel(panel_id){
        x_panels(panel_id, getPanel_cb);
    }
</script>
...
 

第一行调用 sajax_show_javascript,它导入 Sajax 需要的 JavaScript 函数和其他要添加的 getPanel 函数。这些添加的 JavaScript 函数把 Sajax 应用程序的核心带到浏览器,因为浏览器首次装入页面后,PHP 就没有作用了。
 
返回 Sajax 内容
现在需要修改 panels-ajax.php 文件以便适应 Sajax。拷贝并重命名 panels-ajax.php 文件为 panels-sajax.php 并把它放在与其他文件相同的目录下。修改它,如清单 16 所示。
清单 16. panels-sajax.php 的修改
___FCKpd___3

这个文件将检查通过 GET 提交的变量。请注意“panels”被发送给 sajax_import 函数。这应当是 GET 数组中 rs 变量的值。如果 $_GET['rs'] 的值是 panel,那么 panel_id 变量就包含在 $_GET['rsargs'][0] 中,这是发送给 x_panels 函数的第一个参数,由 Sajax 库自动生成。
在返回适当的面板之前,代码必须输出两个字符(它们好像是 Sajax 库的一个 bug)。这两个字符不会在显示的 Web 页面的 HTML 源代码中出现。接下来,必须用 $_GET['rsargs'][0] 替换剩下的到 $_GET['panel_id'] 的引用。最后,需要把导航链接修改成看起来与 sajax-app.php 文件中修改的链接一样。把对 loadHTML 的调用换成 getPanel,要像以前一样传递 ID。
图 5. 集成了 Sajax 后 PHP 应用程序的浏览器输出示例图片URL:https://www6.software.ibm.com/developerworks/cn/education/opensource/os-phpajax/fig05.jpg
应用程序的行为和输出示例如图 5 所示,与使用 Ajax 时的输出相同。

结束语
恭喜!您用 PHP 创建了 Ajax 应用程序并把它与 Sajax 成功地集成。这个应用程序(以及日后的异步 JavaScript 应用程序)会给使用它的那些人节约许多带宽和等候页面重载的时间,因为不必为每次点击都载入整个页面,只需载入必要的内容。这将使创建交互丰富的应用程序变得更为普遍。
下载Source code for the PHP application:ftp://www6.software.ibm.com/software/developer/library/os-phpajax.sajax.source.zip
说明:本文来自:http://www.ibm.com/developerworks/cn/views/opensource/tutorials.jsp?cv_doc_id=109065版权归属IBM所有,本Blog只是处于转载学习更多技术目的
 

GET['rsargs'][0]){
    case 0:
...
    case 9:
      print("##");
      require('content/panel-'.
通过 PHP 和 Sajax 使用 Ajax (三)
简单 Ajax 工具包如何把服务器端 PHP 与 JavaScript 集成

Tyler Anderson , 自由作者, Stexar 公司2006 年 05 月 11 日

与 Sajax 集成
这一节将介绍什么是 Sajax,它如何模拟异步 JavaScript,以及当前的 Ajax 应用程序怎样转化成 Sajax 应用程序。
什么是 Sajax?
简单 Ajax 工具包(Sajax)是同步的异步 JavaScript 和 XML。同步的原因是,当前应用程序中使用的 XML HTTP 对象的细节,通过使用 Sajax.php 库文件而被抽象出去。这使开发 Ajax 应用程序变得更加容易,因为编程出错的机会降低了。链接也变得更加容易,因为它们将只包含函数调用。基本上,Sajax 是一种制作 Ajax 应用程序的模块化方式,通过预定的、动态的函数调用,使得应用程序的开发过程更加平滑。
 
模拟异步 JavaScript
在这一节中,要使用 Sajax 的几个方面来模拟 Ajax。其中一个是 sajax_init,它初始化 Sajax 库。接下来是 sajax_export 函数,要调用它来通知 Sajax 有一个“面板”内容区,稍后会为它创建对应的 JavaScript 函数。针对应用程序需要的动态内容区的多少,可以根据需要为每个动态内容区调用 sajax_export,次数不限。
下一个要使用的函数是 sajax_handle_client_request。这个函数初始化 Sajax 的数据结构,让应用程序准备好处理客户请求。还要设置 $sajax_remote_uri。这是应用程序发送客户请求的目标 URL,与 Ajax 应用程序的链接中嵌入的 URL 类似。
最后,需要用 sajax_show_javascript 函数把 Sajax JavaScript 函数包含在 JavaScript 中。
 
幕后发生了什么?
现在会发生什么?在幕后,Sajax 起的作用实际与 Ajax 相同。但是,Sajax 会替您设置 XML HTTP 对象,从而简化开发工作。它允许应用程序使用 JavaScript 函数用一种模块化的方式拥有多个内容区。Sajax 包使得 Ajax 开发更有效率,同时具有同样的幕后功能。

初始化 Sajax
现在开始 Sajax 应用程序。请拷贝 ajax-app.php 文件并把拷贝改名为 sajax-app.php。把文件放在与 ajax-app.php 文件相同的目录中。添加以下代码到文件开始:
清单 13. 初始化 Sajax

     
<?
require("Sajax.php");

$sajax_remote_uri =
    "http://localhost.localdomain/ajax-sajax/panels-sajax.php";
sajax_init();
sajax_export("panels");
sajax_handle_client_request();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
...
 

首先,需要设置远程 URL。然后需要初始化 Sajax 并导出“panels”。这对 Sajax 进行初始化,允许稍后创建的 JavaScript 函数去处理与“panels”内容相关的请求。

修改链接
链接现在需要包含函数,以便把面板 ID 传递给对应的 JavaScript 函数。
清单 14. 应用程序中的面板链接

     
<?php require('content/header.html'); ?>

<span >Managing content</span>
<?php require('content/between-link.html'); ?>

<span >Adding content</span>
<?php require('content/between-link.html'); ?>

<span >Saving new content</span>
<?php require('content/between-link.html'); ?>

<span >Editing content</span>
<?php require('content/between-link.html'); ?>

<span >Saving edited content</span>
<?php require('content/between-link.html'); ?>

<span >Avoid adding duplicates</span>
<?php require('content/between-link.html'); ?>

<span >Avoid editing a page
                            that doesn't exist</span>
<?php require('content/between-link.html'); ?>

<span >Deleting content</span>
<?php require('content/between-link.html'); ?>

<span >Serving a page</span>
<?php require('content/between-link.html'); ?>

<span >Pulling it together:
                            The CMS control page</span>

<?php require('content/pre-content.html'); ?>
...
 
点击链接会调用一个不同的 JavaScript 函数,接下来会添加这个函数。
 
替换 JavaScript
在继续之前,请从 Ajax 应用程序删除 JavaScrip。需要添加新的函数,这些新函数和 XML HTTP 对象无关。添加以下代码代替当前的 JavaScript 函数:
清单 15. 新的 JavaScript 函数

     
...
<script type="text/javascript">
    <?php sajax_show_javascript(); ?>

    function getPanel_cb(content) {
        document.getElementById('content').innerHTML = content;
    }

    function getPanel(panel_id){
        x_panels(panel_id, getPanel_cb);
    }
</script>
...
 

第一行调用 sajax_show_javascript,它导入 Sajax 需要的 JavaScript 函数和其他要添加的 getPanel 函数。这些添加的 JavaScript 函数把 Sajax 应用程序的核心带到浏览器,因为浏览器首次装入页面后,PHP 就没有作用了。
 
返回 Sajax 内容
现在需要修改 panels-ajax.php 文件以便适应 Sajax。拷贝并重命名 panels-ajax.php 文件为 panels-sajax.php 并把它放在与其他文件相同的目录下。修改它,如清单 16 所示。
清单 16. panels-sajax.php 的修改
___FCKpd___3

这个文件将检查通过 GET 提交的变量。请注意“panels”被发送给 sajax_import 函数。这应当是 GET 数组中 rs 变量的值。如果 $_GET['rs'] 的值是 panel,那么 panel_id 变量就包含在 $_GET['rsargs'][0] 中,这是发送给 x_panels 函数的第一个参数,由 Sajax 库自动生成。
在返回适当的面板之前,代码必须输出两个字符(它们好像是 Sajax 库的一个 bug)。这两个字符不会在显示的 Web 页面的 HTML 源代码中出现。接下来,必须用 $_GET['rsargs'][0] 替换剩下的到 $_GET['panel_id'] 的引用。最后,需要把导航链接修改成看起来与 sajax-app.php 文件中修改的链接一样。把对 loadHTML 的调用换成 getPanel,要像以前一样传递 ID。
图 5. 集成了 Sajax 后 PHP 应用程序的浏览器输出示例图片URL:https://www6.software.ibm.com/developerworks/cn/education/opensource/os-phpajax/fig05.jpg
应用程序的行为和输出示例如图 5 所示,与使用 Ajax 时的输出相同。

结束语
恭喜!您用 PHP 创建了 Ajax 应用程序并把它与 Sajax 成功地集成。这个应用程序(以及日后的异步 JavaScript 应用程序)会给使用它的那些人节约许多带宽和等候页面重载的时间,因为不必为每次点击都载入整个页面,只需载入必要的内容。这将使创建交互丰富的应用程序变得更为普遍。
下载Source code for the PHP application:ftp://www6.software.ibm.com/software/developer/library/os-phpajax.sajax.source.zip
说明:本文来自:http://www.ibm.com/developerworks/cn/views/opensource/tutorials.jsp?cv_doc_id=109065版权归属IBM所有,本Blog只是处于转载学习更多技术目的
 

GET['rsargs'][0].'.html');
      $panel_id_next = 
通过 PHP 和 Sajax 使用 Ajax (三)
简单 Ajax 工具包如何把服务器端 PHP 与 JavaScript 集成

Tyler Anderson , 自由作者, Stexar 公司2006 年 05 月 11 日

与 Sajax 集成
这一节将介绍什么是 Sajax,它如何模拟异步 JavaScript,以及当前的 Ajax 应用程序怎样转化成 Sajax 应用程序。
什么是 Sajax?
简单 Ajax 工具包(Sajax)是同步的异步 JavaScript 和 XML。同步的原因是,当前应用程序中使用的 XML HTTP 对象的细节,通过使用 Sajax.php 库文件而被抽象出去。这使开发 Ajax 应用程序变得更加容易,因为编程出错的机会降低了。链接也变得更加容易,因为它们将只包含函数调用。基本上,Sajax 是一种制作 Ajax 应用程序的模块化方式,通过预定的、动态的函数调用,使得应用程序的开发过程更加平滑。
 
模拟异步 JavaScript
在这一节中,要使用 Sajax 的几个方面来模拟 Ajax。其中一个是 sajax_init,它初始化 Sajax 库。接下来是 sajax_export 函数,要调用它来通知 Sajax 有一个“面板”内容区,稍后会为它创建对应的 JavaScript 函数。针对应用程序需要的动态内容区的多少,可以根据需要为每个动态内容区调用 sajax_export,次数不限。
下一个要使用的函数是 sajax_handle_client_request。这个函数初始化 Sajax 的数据结构,让应用程序准备好处理客户请求。还要设置 $sajax_remote_uri。这是应用程序发送客户请求的目标 URL,与 Ajax 应用程序的链接中嵌入的 URL 类似。
最后,需要用 sajax_show_javascript 函数把 Sajax JavaScript 函数包含在 JavaScript 中。
 
幕后发生了什么?
现在会发生什么?在幕后,Sajax 起的作用实际与 Ajax 相同。但是,Sajax 会替您设置 XML HTTP 对象,从而简化开发工作。它允许应用程序使用 JavaScript 函数用一种模块化的方式拥有多个内容区。Sajax 包使得 Ajax 开发更有效率,同时具有同样的幕后功能。

初始化 Sajax
现在开始 Sajax 应用程序。请拷贝 ajax-app.php 文件并把拷贝改名为 sajax-app.php。把文件放在与 ajax-app.php 文件相同的目录中。添加以下代码到文件开始:
清单 13. 初始化 Sajax

     
<?
require("Sajax.php");

$sajax_remote_uri =
    "http://localhost.localdomain/ajax-sajax/panels-sajax.php";
sajax_init();
sajax_export("panels");
sajax_handle_client_request();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
...
 

首先,需要设置远程 URL。然后需要初始化 Sajax 并导出“panels”。这对 Sajax 进行初始化,允许稍后创建的 JavaScript 函数去处理与“panels”内容相关的请求。

修改链接
链接现在需要包含函数,以便把面板 ID 传递给对应的 JavaScript 函数。
清单 14. 应用程序中的面板链接

     
<?php require('content/header.html'); ?>

<span >Managing content</span>
<?php require('content/between-link.html'); ?>

<span >Adding content</span>
<?php require('content/between-link.html'); ?>

<span >Saving new content</span>
<?php require('content/between-link.html'); ?>

<span >Editing content</span>
<?php require('content/between-link.html'); ?>

<span >Saving edited content</span>
<?php require('content/between-link.html'); ?>

<span >Avoid adding duplicates</span>
<?php require('content/between-link.html'); ?>

<span >Avoid editing a page
                            that doesn't exist</span>
<?php require('content/between-link.html'); ?>

<span >Deleting content</span>
<?php require('content/between-link.html'); ?>

<span >Serving a page</span>
<?php require('content/between-link.html'); ?>

<span >Pulling it together:
                            The CMS control page</span>

<?php require('content/pre-content.html'); ?>
...
 
点击链接会调用一个不同的 JavaScript 函数,接下来会添加这个函数。
 
替换 JavaScript
在继续之前,请从 Ajax 应用程序删除 JavaScrip。需要添加新的函数,这些新函数和 XML HTTP 对象无关。添加以下代码代替当前的 JavaScript 函数:
清单 15. 新的 JavaScript 函数

     
...
<script type="text/javascript">
    <?php sajax_show_javascript(); ?>

    function getPanel_cb(content) {
        document.getElementById('content').innerHTML = content;
    }

    function getPanel(panel_id){
        x_panels(panel_id, getPanel_cb);
    }
</script>
...
 

第一行调用 sajax_show_javascript,它导入 Sajax 需要的 JavaScript 函数和其他要添加的 getPanel 函数。这些添加的 JavaScript 函数把 Sajax 应用程序的核心带到浏览器,因为浏览器首次装入页面后,PHP 就没有作用了。
 
返回 Sajax 内容
现在需要修改 panels-ajax.php 文件以便适应 Sajax。拷贝并重命名 panels-ajax.php 文件为 panels-sajax.php 并把它放在与其他文件相同的目录下。修改它,如清单 16 所示。
清单 16. panels-sajax.php 的修改
___FCKpd___3

这个文件将检查通过 GET 提交的变量。请注意“panels”被发送给 sajax_import 函数。这应当是 GET 数组中 rs 变量的值。如果 $_GET['rs'] 的值是 panel,那么 panel_id 变量就包含在 $_GET['rsargs'][0] 中,这是发送给 x_panels 函数的第一个参数,由 Sajax 库自动生成。
在返回适当的面板之前,代码必须输出两个字符(它们好像是 Sajax 库的一个 bug)。这两个字符不会在显示的 Web 页面的 HTML 源代码中出现。接下来,必须用 $_GET['rsargs'][0] 替换剩下的到 $_GET['panel_id'] 的引用。最后,需要把导航链接修改成看起来与 sajax-app.php 文件中修改的链接一样。把对 loadHTML 的调用换成 getPanel,要像以前一样传递 ID。
图 5. 集成了 Sajax 后 PHP 应用程序的浏览器输出示例图片URL:https://www6.software.ibm.com/developerworks/cn/education/opensource/os-phpajax/fig05.jpg
应用程序的行为和输出示例如图 5 所示,与使用 Ajax 时的输出相同。

结束语
恭喜!您用 PHP 创建了 Ajax 应用程序并把它与 Sajax 成功地集成。这个应用程序(以及日后的异步 JavaScript 应用程序)会给使用它的那些人节约许多带宽和等候页面重载的时间,因为不必为每次点击都载入整个页面,只需载入必要的内容。这将使创建交互丰富的应用程序变得更为普遍。
下载Source code for the PHP application:ftp://www6.software.ibm.com/software/developer/library/os-phpajax.sajax.source.zip
说明:本文来自:http://www.ibm.com/developerworks/cn/views/opensource/tutorials.jsp?cv_doc_id=109065版权归属IBM所有,本Blog只是处于转载学习更多技术目的
 

GET['rsargs'][0] + 1;
      $panel_id_prev = 
通过 PHP 和 Sajax 使用 Ajax (三)
简单 Ajax 工具包如何把服务器端 PHP 与 JavaScript 集成

Tyler Anderson , 自由作者, Stexar 公司2006 年 05 月 11 日

与 Sajax 集成
这一节将介绍什么是 Sajax,它如何模拟异步 JavaScript,以及当前的 Ajax 应用程序怎样转化成 Sajax 应用程序。
什么是 Sajax?
简单 Ajax 工具包(Sajax)是同步的异步 JavaScript 和 XML。同步的原因是,当前应用程序中使用的 XML HTTP 对象的细节,通过使用 Sajax.php 库文件而被抽象出去。这使开发 Ajax 应用程序变得更加容易,因为编程出错的机会降低了。链接也变得更加容易,因为它们将只包含函数调用。基本上,Sajax 是一种制作 Ajax 应用程序的模块化方式,通过预定的、动态的函数调用,使得应用程序的开发过程更加平滑。
 
模拟异步 JavaScript
在这一节中,要使用 Sajax 的几个方面来模拟 Ajax。其中一个是 sajax_init,它初始化 Sajax 库。接下来是 sajax_export 函数,要调用它来通知 Sajax 有一个“面板”内容区,稍后会为它创建对应的 JavaScript 函数。针对应用程序需要的动态内容区的多少,可以根据需要为每个动态内容区调用 sajax_export,次数不限。
下一个要使用的函数是 sajax_handle_client_request。这个函数初始化 Sajax 的数据结构,让应用程序准备好处理客户请求。还要设置 $sajax_remote_uri。这是应用程序发送客户请求的目标 URL,与 Ajax 应用程序的链接中嵌入的 URL 类似。
最后,需要用 sajax_show_javascript 函数把 Sajax JavaScript 函数包含在 JavaScript 中。
 
幕后发生了什么?
现在会发生什么?在幕后,Sajax 起的作用实际与 Ajax 相同。但是,Sajax 会替您设置 XML HTTP 对象,从而简化开发工作。它允许应用程序使用 JavaScript 函数用一种模块化的方式拥有多个内容区。Sajax 包使得 Ajax 开发更有效率,同时具有同样的幕后功能。

初始化 Sajax
现在开始 Sajax 应用程序。请拷贝 ajax-app.php 文件并把拷贝改名为 sajax-app.php。把文件放在与 ajax-app.php 文件相同的目录中。添加以下代码到文件开始:
清单 13. 初始化 Sajax

     
<?
require("Sajax.php");

$sajax_remote_uri =
    "http://localhost.localdomain/ajax-sajax/panels-sajax.php";
sajax_init();
sajax_export("panels");
sajax_handle_client_request();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
...
 

首先,需要设置远程 URL。然后需要初始化 Sajax 并导出“panels”。这对 Sajax 进行初始化,允许稍后创建的 JavaScript 函数去处理与“panels”内容相关的请求。

修改链接
链接现在需要包含函数,以便把面板 ID 传递给对应的 JavaScript 函数。
清单 14. 应用程序中的面板链接

     
<?php require('content/header.html'); ?>

<span >Managing content</span>
<?php require('content/between-link.html'); ?>

<span >Adding content</span>
<?php require('content/between-link.html'); ?>

<span >Saving new content</span>
<?php require('content/between-link.html'); ?>

<span >Editing content</span>
<?php require('content/between-link.html'); ?>

<span >Saving edited content</span>
<?php require('content/between-link.html'); ?>

<span >Avoid adding duplicates</span>
<?php require('content/between-link.html'); ?>

<span >Avoid editing a page
                            that doesn't exist</span>
<?php require('content/between-link.html'); ?>

<span >Deleting content</span>
<?php require('content/between-link.html'); ?>

<span >Serving a page</span>
<?php require('content/between-link.html'); ?>

<span >Pulling it together:
                            The CMS control page</span>

<?php require('content/pre-content.html'); ?>
...
 
点击链接会调用一个不同的 JavaScript 函数,接下来会添加这个函数。
 
替换 JavaScript
在继续之前,请从 Ajax 应用程序删除 JavaScrip。需要添加新的函数,这些新函数和 XML HTTP 对象无关。添加以下代码代替当前的 JavaScript 函数:
清单 15. 新的 JavaScript 函数

     
...
<script type="text/javascript">
    <?php sajax_show_javascript(); ?>

    function getPanel_cb(content) {
        document.getElementById('content').innerHTML = content;
    }

    function getPanel(panel_id){
        x_panels(panel_id, getPanel_cb);
    }
</script>
...
 

第一行调用 sajax_show_javascript,它导入 Sajax 需要的 JavaScript 函数和其他要添加的 getPanel 函数。这些添加的 JavaScript 函数把 Sajax 应用程序的核心带到浏览器,因为浏览器首次装入页面后,PHP 就没有作用了。
 
返回 Sajax 内容
现在需要修改 panels-ajax.php 文件以便适应 Sajax。拷贝并重命名 panels-ajax.php 文件为 panels-sajax.php 并把它放在与其他文件相同的目录下。修改它,如清单 16 所示。
清单 16. panels-sajax.php 的修改
___FCKpd___3

这个文件将检查通过 GET 提交的变量。请注意“panels”被发送给 sajax_import 函数。这应当是 GET 数组中 rs 变量的值。如果 $_GET['rs'] 的值是 panel,那么 panel_id 变量就包含在 $_GET['rsargs'][0] 中,这是发送给 x_panels 函数的第一个参数,由 Sajax 库自动生成。
在返回适当的面板之前,代码必须输出两个字符(它们好像是 Sajax 库的一个 bug)。这两个字符不会在显示的 Web 页面的 HTML 源代码中出现。接下来,必须用 $_GET['rsargs'][0] 替换剩下的到 $_GET['panel_id'] 的引用。最后,需要把导航链接修改成看起来与 sajax-app.php 文件中修改的链接一样。把对 loadHTML 的调用换成 getPanel,要像以前一样传递 ID。
图 5. 集成了 Sajax 后 PHP 应用程序的浏览器输出示例图片URL:https://www6.software.ibm.com/developerworks/cn/education/opensource/os-phpajax/fig05.jpg
应用程序的行为和输出示例如图 5 所示,与使用 Ajax 时的输出相同。

结束语
恭喜!您用 PHP 创建了 Ajax 应用程序并把它与 Sajax 成功地集成。这个应用程序(以及日后的异步 JavaScript 应用程序)会给使用它的那些人节约许多带宽和等候页面重载的时间,因为不必为每次点击都载入整个页面,只需载入必要的内容。这将使创建交互丰富的应用程序变得更为普遍。
下载Source code for the PHP application:ftp://www6.software.ibm.com/software/developer/library/os-phpajax.sajax.source.zip
说明:本文来自:http://www.ibm.com/developerworks/cn/views/opensource/tutorials.jsp?cv_doc_id=109065版权归属IBM所有,本Blog只是处于转载学习更多技术目的
 

GET['rsargs'][0] - 1;
    
      if($panel_id_prev > = 0){
 print("
<span onclick=\"getPanel(".$panel_id_prev.")\">Previous Panel</span>
");
...
 print("
<span onclick=\"getPanel(".$panel_id_next.")\">Next Panel</span>
");
...

这个文件将检查通过 GET 提交的变量。请注意“panels”被发送给 sajax_import 函数。这应当是 GET 数组中 rs 变量的值。如果 $_GET['rs'] 的值是 panel,那么 panel_id 变量就包含在 $_GET['rsargs'][0] 中,这是发送给 x_panels 函数的第一个参数,由 Sajax 库自动生成。

在返回适当的面板之前,代码必须输出两个字符(它们好像是 Sajax 库的一个 bug)。这两个字符不会在显示的 Web 页面的 HTML 源代码中出现。接下来,必须用 $_GET['rsargs'][0] 替换剩下的到 $_GET['panel_id'] 的引用。最后,需要把导航链接修改成看起来与 sajax-app.php 文件中修改的链接一样。把对 loadHTML 的调用换成 getPanel,要像以前一样传递 ID。

图 5. 集成了 Sajax 后 PHP 应用程序的浏览器输出示例

图片URL:https://www6.software.ibm.com/developerworks/cn/education/opensource/os-phpajax/fig05.jpg

应用程序的行为和输出示例如图 5 所示,与使用 Ajax 时的输出相同。

结束语

恭喜!您用 PHP 创建了 Ajax 应用程序并把它与 Sajax 成功地集成。这个应用程序(以及日后的异步 JavaScript 应用程序)会给使用它的那些人节约许多带宽和等候页面重载的时间,因为不必为每次点击都载入整个页面,只需载入必要的内容。这将使创建交互丰富的应用程序变得更为普遍。

下载
Source code for the PHP application:
ftp://www6.software.ibm.com/software/developer/library/os-phpajax.sajax.source.zip

说明:
本文来自:http://www.ibm.com/developerworks/cn/views/opensource/tutorials.jsp?cv_doc_id=109065
版权归属IBM所有,本Blog只是处于转载学习更多技术目的

 

时间: 2024-10-31 14:30:28

通过 PHP 和 Sajax 使用 Ajax(三)的相关文章

通过PHP和Sajax使用Ajax之&amp;#106avascript

ajax 多年以来,创建真正具有响应性的 Web 应用程序这一目标一直被 Web 开发的一个简单事实所阻碍:要改变页面某一部分的信息,用户就必须重载整个页面.但是以后不再会这样了.感谢异步 Java? 脚本和 XML(Ajax),我们现在可以从服务器端请求新内容,只修改页面的一部分.这个教程解释了如何把 Ajax 用于 PHP ,并介绍了简单 Ajax 工具包(Sajax),这是一个用 PHP 编写的工具,可以把服务器端 PHP 与 javascript 集成. 开始之前 这份教程针对的是对于开

通过PHP和Sajax使用Ajax之JavaScript

ajax|javascript 多年以来,创建真正具有响应性的 Web 应用程序这一目标一直被 Web 开发的一个简单事实所阻碍:要改变页面某一部分的信息,用户就必须重载整个页面.但是以后不再会这样了.感谢异步 Java? 脚本和 XML(Ajax),我们现在可以从服务器端请求新内容,只修改页面的一部分.这个教程解释了如何把 Ajax 用于 PHP ,并介绍了简单 Ajax 工具包(Sajax),这是一个用 PHP 编写的工具,可以把服务器端 PHP 与 JavaScript 集成. 开始之前

ajax 三种实现方法实例代码_IOS

ajax即异步的javascript and xml, 本文章向码农们介绍ajax的三种实现方法(prototype实现,jquery实现,XMLHttpRequest实现) 本文主要是比较三种实现Ajax的方式,为以后的学习开个头. 准备: 1.  prototype.js 2.  jquery1.3.2.min.js 3.  json2.js 后台处理程序(Servlet),访问路径servlet/testAjax: Java代码 package ajax.servlet; import j

Thinking in AJAX(三)——AJAX框架汇总

基于浏览器的应用框架一般分为两种: Aplication frameworks:提供了浏览器功能,但其最著名的还是在于通过窗口 生成组件建立桌面GUI. Infrastructural frameworks:提供基本的框架功能和 轻便式浏览器端操作,让开发者去创建具体应用,主要功能包括: 基于 XMLHttpRequest组件的浏览器交互功能 XML解析和操作功能 根据 XMLHttpRequest的返回信息进行相应的DOM操作 一些特殊情况下,和其他的浏 览器端技术如Flash(或Java A

Rails系统中的AJAX开发技术简析

ajax|rails 一. Ajax的简短历史 在短短几个月内,Ajax从一种十分模糊稀罕的技术一下变成最热门的东西.本文将介绍极其容易使用的Ajax支持-作为Ruby on Rails web应用程序框架的一部分实现. 本文不是一个详细的教程,所以我假定你已经了解一点关于如何组织和构建一个Rails web应用程序的知识. 最开始出现的是万维网.比较于桌面应用程序,web应用程序相当缓慢和沉闷.无论如何,人们都喜欢上了web应用程序,因为他们无论在什么地方都能上网,只要身边的计算机上安装一个浏

Rails系统中的AJAX开发技术简析(1)

ajax|rails 一. Ajax的简短历史 在短短几个月内,Ajax从一种十分模糊稀罕的技术一下变成最热门的东西.本文将介绍极其容易使用的Ajax支持-作为Ruby on Rails web应用程序框架的一部分实现.本文不是一个详细的教程,所以我假定你已经了解一点关于如何组织和构建一个Rails web应用程序的知识. 最开始出现的是万维网.比较于桌面应用程序,web应用程序相当缓慢和沉闷.无论如何,人们都喜欢上了web应用程序,因为他们无论在什么地方都能上网,只要身边的计算机上安装一个浏览

结合AJAX进行PHP开发之入门_AJAX相关

异步 JavaScript 和 XML(Asynchronous JavaScript and XML,Ajax)无疑是最流行的新 Web 技术.本文中我们将完全使用 PHP 和 Simple Ajax Toolkit (Sajax) 创建一个简单的相册作为在线 Web 应用程序.我们首先用标准的 PHP 开发方法编写简单的相册,然后再用 Sajax 将其变成活动的 Web 应用程序. 创建一个简单的相册 本文将使用两种方法创建一个简单的相册:传统的 Web 应用程序和基于 Sajax 的应用程

利用CSS、JavaScript及Ajax实现图片预加载的方法_javascript技巧

预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布,也可帮助用户在浏览你网站内容时获得更好的用户体验.本文将分享三个不同的预加载技术,来增强网站的性能与可用性. 实现图片预加载可以使用css.JavaScript.Ajax三种方法.下面分别介绍这些方法的实现. 使用CSS 单纯的使用css可以将图片加载到页面元素的背景上,这种方法简单.高效: #d

分页查询算法实践

  马上要毕业了,心里很迷茫,感觉真的时间飞逝,软件真的博大精深,特别.NET平台在Microsoft下变化之迅猛,个人总是赶不上技术的日新月异.哎,希望自己能早日走上设计之路. 闲来无事便根据自己大学四年项目实践经验,想实现一些常用模块的抽象和集成.考虑了一下觉得先该从分页查询入手,便简单的设计了下,现目前版本实现了单表的基本分页查询.我知道博客园了已经有很多前辈做了这个,本人设计能力和前辈们比那就欠缺多了,有那里不足的望指出,大家共同进步. 下载代码:WolfPager下载 主要采用工厂模式