1024

白客
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在ASP.NET中实现AJAX(二)

Posted on 2006-11-06 10:40  白客  阅读(351)  评论(0编辑  收藏  举报
创建服务器端函数

 

现在来创建可从客户端调用中异步访问的服务器端函数。因为目前还不支持所有的返回类型(不用担心,将在目前的基础上开发新的版本),我们继续使用简单的ServerSideAdd函数吧。在file后的代码中,向页面添加下列代码:

[Ajax.AjaxMethod()]

public int ServerSideAdd(int firstNumber, int secondNumber)

{

return firstNumber + secondNumber;

}

要注意,这些函数具有Ajax.AjaxMethod属性集。该属性告诉包装器这些方法创建javaScript代理,以便在客户端调用。

客户端调用

最后一步是用JavaScript调用该函数。AJAX包装器负责创建带有两个参数的JavaScript函数Sample.ServerSideAdd。对这种最简单的函数,只需要调用该方法并传递两个数字:

<%@ Page Inherits="AjaxPlay.Sample" Codebehind="sample.aspx.cs" ... %>

<html>

<head>

<script language="javascript" src="Ajax/common.ashx"></script>

<script language="javascript"

src="Ajax/AjaxPlay.Sample,AjaxPlay.ashx"></script>

</head>

<body>   

<form id="Form1" method="post" runat="server">

<script language="javascript">

var response = Sample.ServerSideAdd(100,99);

alert(response.value);

</script>

</form>   

</body>

</html>

当然,我们不希望仅仅用这种强大的能力来警告用户。这就是所有客户端代理(如JavaScript Sample.ServerSideAd函数)还接受其他特性的原因。这种特性就是为了处理响应而调用的回调函数:

Sample.ServerSideAdd(100,99, ServerSideAdd_CallBack);

function ServerSideAdd_CallBack(response){

if (response.error != null){

alert(response.error);

return;

}

alert(response.value);

}

从上述代码中可以看到我们指定了另外一个参数。ServerSideAdd_CallBack(同样参见上述代码)是用于处理服务器响应的客户端函数。这个回调函数接收一个响应对象,该对象公开了三个主要性质

Value——服务器端函数实际返回的值(无论是字符串、自定义对象还是数据集)。

Error——错误消息,如果有的话。

Request——xml http请求的原始响应。

Context——上下文对象。

首先我们检查error只看看是否出现了错误。通过在服务器端函数中抛出异常,可以很容易处理error特性。在这个简化的例子中,然后用这个值警告用户。Request特性可用于获得更多信息。

http://www.shpan.com/Detail.asp?ID=397