藉助於CodePlex上開源項目PHP for Microsoft AJAX Library的協助,我們已經可以在PHP上使用ASP.NET AJAX的很多核心功能了。
下載安裝
PHP for Microsoft AJAX Library目前僅僅處於Alpha階段,想實際使用似乎還早了點,只能嘗鮮了。
預先需求有PHP 5.2版本,且必須安裝了php-json模組。
:http://www.codeplex.com/phpmsajax/Release/ProjectReleases.aspx?ReleaseId=1692
安裝方法:
- 下載PHP for Microsoft AJAX Library並解壓縮
- 下載Microsoft AJAX Library(http://ajax.asp.net)
- 在PHP Web Service代碼中include一下MSAjaxService.php。
- 在調用該Web Service的頁面中,引入MicrosoftAjax.js檔案。
下面來看一個“經典”的情境:調用伺服器端方法取得複雜類型。
編寫Service檔案
建立一個php檔案,命名為EmployeeService.php。首先寫上這一句,include必要的支援代碼:
require_once 'MSAjaxService.php';
然後定義一個Employee類。四個屬性一目瞭然,不用多說:
class Employee
{
public $Id;
public $Name;
public $Email;
public $Salary;
function __construct($id, $name, $email, $salary)
{
$this->Id = $id;
$this->Name = $name;
$this->Email = $email;
$this->Salary= $salary;
}
}
接下來是EmployeeService類,繼承於MSAjaxService.php中的MSAjaxService基類。其中定義一個方法,用來返回一個Employee對象:
class EmployeeService extends MSAjaxService
{
function GetEmployee()
{
return new Employee(12345, "Dflying Chen", "Dflying@some.com", 1000);
}
}
然後建立一個EmployeeService的執行個體,並且調用基類的ProcessRequest()方法,處理該請求:
$theService = new EmployeeService();
$theService->ProcessRequest();
大功告成!
編寫調用頁面
建立一個頁面,php或者html均可——程式比較簡單。這回我們沒了ScriptManager的協助,引入ASP.NET AJAX用戶端指令碼檔案以及上面的這個Service只能靠手工了。注意EmployeeService.php/js可以得到該Service的用戶端代理,和ASP.NET平台上的文法一樣:
<head>
<title>ASP.NET AJAX On PHP Demo</title>
<script type="text/javascript" src="MicrosoftAjaxLibrary/MicrosoftAjax.js"></script>
<script type="text/javascript" src="EmployeeService.php/js"></script>
</head>
程式的UI部分很簡單,按鈕用來觸發非同步呼叫,<div />用來顯示調用結果:
<body>
<input id="btnGetEmployee" type="button"
value="Get an Employee" onclick="return btnGetEmployee_onclick()" />
<div id="resultDiv">
</div>
</body>
在該按鈕的click事件處理函數中,調用該Service,文法也和ASP.NET AJAX中一致,非常方便:
function btnGetEmployee_onclick()
{
EmployeeService.GetEmployee(onSucceeded);
}
在回呼函數中,把得到的Employee對象顯示到resultDiv中:
function onSucceeded(result)
{
var sb = new Sys.StringBuilder("Server returns an Employee object: <br />");
sb.append("Id: " + result.Id + "<br />");
sb.append("Name: " + result.Name + "<br />");
sb.append("Email: " + result.Email + "<br />");
sb.append("Salary: " + result.Salary + "<br />");
$get("resultDiv").innerHTML = sb.toString();
}
大功告成!
樣本程式介面
第一次訪問
點擊Get an Employee按鈕後
樣本程式碼下載
在這裡呢:ASPNETAJAXOnPHP.zip
好一陣子沒用PHP了,生疏了不少。不過照貓畫虎還是做出來了,這個項目我覺得非常有前途,各位朋友不妨參與一下。這一段比較忙,沒寫什麼技術文章,這一篇也是草草而為,請朋友們見諒。