atitit.php中的dwr 设计模式
atitit.php中的dwr 设计模式
1. dwr的优点相对于ajax来说。。
dwr是构建在ajax上的。。更加的dsl化。。
大大简化了编写ajax的工作量。
2. DWR工作原理
是通过动态把Java类生成为Javascript。它的代码就像Ajax一样,你感觉调用就像发生在浏览器端,但是实际上代码调用发生在服务器端,DWR负责数据的传递和转换。这种从Java 到JavaScript的远程调用功能的方式使DWR用起来有种非常像RMI或者SOAP的常规RPC机制,而且DWR的优点在于不需要任何的网页浏览器插件就能运行在网页上。
Java从根本上讲是同步机制,然 AJAX却是异步的。所以你调用远程方法时,当数据已经从网络上返回的时候,你要提供有反调 (callback) 功能的DWR。
DWR在客户端放置了一个 engine.js作为客户端的引擎,在Server端放置了一个dwr.jar作为服务器端的引擎。
然后,可以以RPC的方式来描述
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
3. php的dwr实现
<script type="text/javascript" src="../com.attilax/dwr.js"></script>
var mp={};
// mp.id=85495; frm cookie
mp.method="get-score";
dwrC.exec(mp,function(data){
//if ex then to ex process hadler
/* if(data)
alert("不能编辑,已经审核通过");
else
window.location.href="elemt_edit.jsp?id="+str;*/
$("#score").text(data+"分");
$("#score-detail").text( "您的育儿指数总算及格了,还要继续....");
},"/lime");
--------------dwr.js
var dwrC={};
dwrC.exec=function(param,callback,approot)
{
//jQuery.get("dwr.php?param="+param, [data], [callback])
$.ajax(
{
type: "get",
url: approot+"/com.attilax/dwr.php",
data:param,
dataType: "text",
success: function(data) {
// $("#divShow").html(data);
callback(data);
}
});
}
-------------dwr.php
<?php
require_once(dirname(__FILE__).'/../iocx.php');
//$dwrEventContainer['b'] = 'char b';
$method= $_GET['method'];
$fun=$dwrEventContainer[ $method];
$rzt=$fun($method);
echo $rzt;
?>
------------iocx.php
$dwrEventContainer = array(); //定义一个数组
$dwrEventContainer['get-score'] =getScoreX;
4. 参考
DWR 工作原理 - ITeye问答.htm