1 test.html
<html>
<head>
<title></title>
<!-- Include Ext and app-specific scripts: -->
<script type="text/javascript" src="../adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../ext-all-debug.js"></script>
<script type="text/javascript" src="ExtStart.js"></script>
<!-- Include Ext stylesheets here: -->
<link rel="stylesheet" type="text/css" href="../resources/css/ext-all.css">
</head>
<body>
<div id="msg"></div>
<div>
Name: <input type="text" id="name" />
<input type="button" id="okButton" value="OK" />
</div>
<div id="msg"></div>
</div>
</body>
</html>
2 ExtStart.js
Ext.onReady(function()...{
Ext.get('okButton').on('click', function()...{
var msg = Ext.get('msg');
msg.load(...{
url: 'ajax-example.php', // <-- 按實際改動
params: 'name=' + Ext.get('name').dom.value,
text: 'Updating...'
});
msg.show();
});
});
3 ajax-example.php
<?php if(isset($_POST['name'])) {
echo 'From Server: '.$_POST['name'];
}
?>
這種模式看起來已經比較熟悉了吧!先擷取按鈕元素,加入一個匿名函數監聽單擊。在事件處理器中(event handler),我們使用一個負責處理Ajax請求、接受響應(Response)和更新另一個元素的Ext內建類,稱作UpdateManagerUpdater。UpdateManager可以直接使用,或者和我們現在的做法一樣,通過Element的load方法來引用(本例中該元素是id為“msg“的div)。當使用Element.load方 法,請求(request)會在加工處理後發送,等待伺服器的響應(Response),來自動替換元素的innerHTML。簡單傳入伺服器url地 址,加上字串參數,便可以處理這個請求(本例中,參數值來自“name”元素的value),而text值是請求發送時提示的文本,完畢後顯示那個 msg的div(因為開始時預設隱藏)。當然,和大多數Ext組件一樣,Ext.Ajax 有許多的參數可選,不同的Ajax請求有不同的方案。而這裡僅示範最簡單的那種。
最後一個關於Ajax隱晦的地方就是,伺服器實際處理請求和返回(Resposne)是具體過程。這個過程會是一個服務端頁面,一個Servlet,一個 Http調度過程,一個WebService,甚至是Perl或CGI指令碼,即不指定一個伺服器都可以處理的http請求。讓人無法預料的是,伺服器返回 什麼是伺服器的事情,無法給一個標準的例子來覆蓋闡述所有的可能性。。