您的位置:首页 > 编程语言 > ASP

asp.net通过反射技术实现Ajax(3)--第一个简单的例子

2008-07-06 10:09 801 查看
现在我们已经有了AjaxUtils在服务端帮助我们调用控件方法

也有了客户端的Ajax为我们请求数据,如果不用他们来做点事情就实在说不过去了.

那么就让我们开始第一个简单的应用吧(废话不说了,现在就开始)

首先看一个后台页面的代码

publicpartialclassinfo:System.Web.UI.Page

{

protectedvoidPage_Load(objectsender,EventArgse)

{

if(Request.HttpMethod.ToLower().Equals("post"))//如果请求方式是post,尝试通过AjaxUtils调用方法

AjaxUtils.CallAjaxMethod(this,Request.Form.GetValues("ajax_method"));

}

//方法一

protectedstringshowMessage(objectsender,EventArgse)

{

return("showMessagecalled");

}

//方法二

protectedstringshowMessage2(objectsender,EventArgse)

{

return("showMessage2called");

}

}

怎么样,很简单的代码吧

首先通过判断请求方式决定是否调用Ajax方法,这里没有做严格的请求过滤,如果想要严格的安全性,当然还可以通过额外的手段过滤请求(判断sessionid,header之类的东西)

这里声明了两个方法,返回两段不同的文字

下面让我们看看在前台如何一次性调用这两个方法吧

info.aspx代码:

<body>

<formid="form1"runat="server">

<div>

<inputtype="button"id="button"value="click"/><divid="message"><asp:LabelID="message"runat="server"></asp:Label></div>

<script>

window.onload=function(){

document.getElementById('button').onclick=function(){

//创建一个ajax对象,绑定到button上,以post方式请求本页面的url

//同时请求了两个方法showMessage和showMessage2

varajax=newAjax.Init(this,'<%=Request.RawUrl%>','post',['ajax_method=showMessage','ajax_method=showMessage2']);

ajax.sendRequest();

//处理返回的响应信息

this.ajaxUpdate=function(req){

varxml=req.responseXML;

varroot=xml.childNodes[0];//'ajax-response');//得到xml响应的root

varresponse=root.getElementsByTagName('response');//得到response节点列表

for(vari=0;i<response.length;i++){

varnode=response[i];

varid=node.attributes[0].nodeValue;

//如果是showMessage方法返回的信息,更新label中的文字

if(id=='showMessage')

document.getElementById('message').innerHTML=node.text;

else

alert(node.text);//如果是showMessage2方法返回的信息,简单的弹出一个对话框显示信息

}

returnfalse;

};

};

}

</script>

</div>

</form>

</body>


现在前台和后台的代码都已经有了,让我们看一下效果吧

点击页面上的按钮,label中的消息被更新成了showMessagecalled

同时弹出一个对话框提示我们showMessage2called

说明我们确实是一次性的请求了服务端的两个方法

呵呵,很简单对吧

下一次,让我们看看如何产生更复杂的应用(比如更新页面上的多个repeater控件,或者是ajax翻页之类的)

未完,待续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: