通過 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