借助于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了,生疏了不少。不过照猫画虎还是做出来了,这个项目我觉得非常有前途,各位朋友不妨参与一下。这一段比较忙,没写什么技术文章,这一篇也是草草而为,请朋友们见谅。
本书已经正式出版,请参考:《ASP.NET Ajax程序设计-第I卷:服务器端ASP.NET 2.0 AJAX Extensions与ASP.NET AJAX Control Toolkit》2007年4月16日 china-pub全国首发!+ 赠书名单已经确定
感谢朋友们的关注、支持与谩骂。如果不出意外的话,下周三《ASP.NET AJAX程序设计 第I卷 服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit》即可在各大网上书店购买,下周末即可在书店看到。特别感谢开心大哥百忙中为本书作序。
内容介绍
本卷从最易于理解和使用的部分入手,介绍ASP.NET AJAX框架中能够与传统ASP.NET无缝对接的服务器端部分,包括服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit。这部分内容不需要读者任何的客户端开发知识,只要在Visual Studio中拖拖拽拽即可实现强大的客户端Ajax功能,例如局部页面更新、异步回送、拖拽、动画等,非常适合为现有的ASP.NET 2.0应用程序添加少量的Ajax特性,或是基于ASP.NET 2.0的一些简单Ajax功能的实现。
本卷适合对ASP.NET AJAX有兴趣,并希望对其有更进一步了解的Web开发人员阅读。
相关信息
CSDN读书频道连载:http://book.csdn.net/bookfiles/326/
人民邮电出版社和我的赠书活动(朋友们抓紧,现在还有机会,但活动即将结束):http://www.turingbook.com/getajaxbooks/
Dearbook网上书店购买:http://dearbook.com.cn/book/170338
China-pub网上书店购买:http://www.china-pub.com/computers/common/info.asp?id=34372
图书编写的心路历程:http://www.cnblogs.com/dflying/archive/2007/04/03/697606.html
第二卷的章节计划(欢迎各位不吝给出意见):http://www.cnblogs.com/dflying/archive/2007/03/27/689714.html
4/4更新:赠书活动已经开始,请到这里了解详情
06年3月份,我终于鼓足勇气,在博客园开始了自己的Blog生涯。当时恰逢微软公司的ASP.NET AJAX(开发代号:Atlas)处于CTP阶段,加之业界对Ajax的热情高涨,于是我开始记下一些ASP.NET AJAX在我实际开发/使用中的心得体会。谁知无心栽柳间却得到了众多朋友的关注和支持,于是Blog中的ASP.NET AJAX相关内容一发不可收拾……
转眼间到了06年7月份,人民邮电出版社图灵公司的傅志红老师联系到了我,并给了我翻译第一本ASP.NET AJAX著作(《Atlas基础教程》)的宝贵机会。诚惶诚恐中我开始了第一次真正意义上的“写作生活”……昏天暗地的三个月后,在人民邮电出版社图灵公司和我的共同努力下,《Atlas基础教程》翻译本终于如期面世,半个月的时间首印5000册即告售罄,并荣登Dearbook当月销售榜第二……
可是喜悦总是短暂的,正当我们踌躇满志准备重印的时候,ASP.NET AJAX由CTP转为Beta。噩耗袭来,《Atlas基础教程》一瞬间便成了废纸,重印更是便成了空中楼阁……由此我也“荣获”了2006年CSDN读书频道“百折不挠奖” 。
…………
回溯到06年8月,那是我刚刚完成了《Atlas基础教程》的翻译工作,信心爆棚并信誓旦旦地开始准备编写我自己的原创ASP.NET AJAX图书。年少轻狂、好大喜功的我并不知道写书的艰辛,更是忘乎所以地没有意识到当时ASP.NET AJAX正处于巨变的前夜,洋洋洒洒列出了30多章的一本大书,1000多页的计划。然后还写出了一篇条理清晰的策划,摆事实讲道理让图灵公司同意了我的出版请求。
…………
随着时间的推移,我越发感到这本大书的分量,偶尔平静下来,也似乎隐约能够体会到表面平静的ASP.NET AJAX CTP下面隐藏的暗流。感谢同事Xiang YU的苦心劝说,在06年9月份,我决定将这本大书拆分成三卷,以求规避可能发生的风险,并再次用一篇“不容争辩”的策划说服了图灵公司。
没日没夜的06年十一七天长假之后,《ASP.NET Atlas程序设计:第I卷 服务器端》初稿完成。但ASP.NET AJAX仍在CTP中驻足不前,满怀欣喜的我对此并不在乎,抱着第一卷能在06年出版的幻想,立即投入到第二卷的撰写中……
…………
“出来混的,迟早要还”。该来的事情还是来了,虽然我曾想到可笑的分卷“规避”——06年10月末,ASP.NET AJAX一夜间从CTP转为了Beta,其改动之大,对我来说不啻于一个晴天霹雳。
……
……
无法形容当时的感觉,正如我在《Atlas新版本的发布对我而言无疑是一个晴天霹雳》中写的,“这意味着我和人民邮电出版社图灵公司这三个多月的努力全部付之东流……现在这本书已经没有了任何的参考价值,没有了任何的出版意义……且CTP和Beta 之间的改变如此巨大,让修改原稿几乎成了不可能完成的任务……面对着眼前这一叠厚厚的400多页凝聚了我和出版社心血的成稿,真是让我欲哭无泪,心情沮丧到了极点……”。
好在时间可以治疗一切,朋友们的鼓励也让我逐渐恢复了过来。我开始从头学习曾经那么熟悉,而现在却“面目全非”的ASP.NET AJAX,并开始修改(或者叫重写)我的第一卷书稿。
…………
06年年末,修改后的第一卷如期完成,想想仍旧可能是国内乃至全球第一本ASP.NET AJAX正式版图书,似乎让我又看到了远方的幻境。我也再一次地松懈了下来……
松懈的日子过得特别快,虽然期间我还翻译了著名的《CSS禅意花园》,不过很快就到了4月份。我还在这里不着急,因为据我了解国外第一本ASP.NET AJAX正式版图书5月份才能出版,做到全球第一本也似乎就是信手拈来么?
…………
突然有一天,偶然听到人民邮电出版社的一本ASP.NET AJAX正式版图书即将出版的消息,再次让我重重地摔了一下,第一本梦想再次如泡沫般破碎,自己的松懈也再次酿成苦果……
…………
这就是《ASP.NET AJAX程序设计 第I卷 服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit》的故事梗概,其间的酸甜苦辣,所得所失,只有自己才最清楚……不管怎样,一切都过去了。值此新书即将出版的时候,向各位曾经关注过我的朋友真诚地说声谢谢!我也将和图灵公司一起赠送一批新书给购买过《Atlas基础教程》的朋友,略表弥补寸心……具体的赠书活动流程以及相关宣传不日即将出炉,我在Blog上也会随时保持更新。
路漫漫其修远兮,吾将上下而求索……继续写第二卷去了!
4/4更新:赠书活动已经开始,请到这里了解详情