在PHP中使用ASP.NET AJAX

借助于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

安装方法:

  1. 下载PHP for Microsoft AJAX Library并解压缩
  2. 下载Microsoft AJAX Library(http://ajax.asp.net
  3. 在PHP Web Service代码中include一下MSAjaxService.php。
  4. 在调用该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了,生疏了不少。不过照猫画虎还是做出来了,这个项目我觉得非常有前途,各位朋友不妨参与一下。这一段比较忙,没写什么技术文章,这一篇也是草草而为,请朋友们见谅。

posted on 2007-04-19 00:49  Dflying Chen  阅读(5922)  评论(21编辑  收藏  举报