ASP.NET:为 AJAX 请求添加客户端事件

简介:
一、添加/删除请求开始事件的方法: 
Sys.WebForms.PageRequestManager.instance.add_beginRequest(beginRequestHandler) 
Sys.WebForms.PageRequestManager.instance.remove_beginRequest(beginRequestHandler) 
参数beginRequestHandler指定当请求开始之前要调用的函数。 

例: 

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler); 
function BeginRequestHandler(sender, args) 

//添加你想做的事情 


函数参数args是Sys.WebForms.BeginRequestEventArgs类的一个实例。 
BeginRequestEventArgs类包含两个成员 
1、postBackElement 属性,发出触发请求的HTML对象。如: var elem = arg.get_postBackElement(); 
2、request 属性,获取当前请求的实例对象。如: var request = arg.get_request(); 
返回值是一个Sys.Net.WebRequest类型的实例,这里我们对它不做过多的讲述,请读者查阅更多的资料。 


二、添加/删除请求结束的代码: 
Sys.WebForms.PageRequestManager.instance.add_endRequest(endRequestHandler) 
Sys.WebForms.PageRequestManager.instance.remove_endRequest(endRequestHandler) 
参数endRequestHandler 指定当请求结束之后要调用的函数。例: Sys.WebForms.PageRequestManager.getInstance().add_endRequest 
(EndRequestHandler); 
function EndRequestHandler(sender, args) 

//你想添加的代码 

函数参数args是Sys.WebForms.EndRequestEventArgs类的实例。利用它可以获取请求期间发生的异常,以及请求返回的response对象。关于这 个类的详细信息请查看其帮助,由于篇幅问题,这里不再过多的说它。  
三、演示实例
这个实例使用VS2005开发,注意还需要安装AJAX插件,插件名字是:ASPAJAXExtSetup.msi,可以到微软官方网站下载,也可以搜索一下,就近下载,安装之后会自动在VS2005工具箱上增加相关选项卡:

相关aspx的代码如下:
< %@ Page  Language ="C#"  AutoEventWireup ="true"  CodeFile ="AjaxDemo.aspx.cs"  Inherits ="AjaxDemo"  % >

< %@ Register  Assembly ="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
    Namespace
="System.Web.UI"  TagPrefix ="asp"  % >

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
    
< title > Ajax事件管理代码 </ title >
    
< style  type ="text/css" >  
    body
    {
         font-family: Tahoma; 
    } 

    div.AlertStyle 
    { 
        background-color: #FFC080; 
        top: 95%; 
        left: 1%; 
        height: 20px; 
        position: absolute; 
        visibility: hidden; 
    }
</ style >  

</ head >
< body >
    
< form  id ="form1"  runat ="server" >
    
< div >
    
< asp:scriptmanager  ID ="ScriptManager1"  runat ="server" ></ asp:scriptmanager >
    
< script  type ="text/javascript"  language ="javascript" >
        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler); 
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
    function BeginRequestHandler(sender, args) 
    { 
        var elem = args.get_postBackElement(); 
        ActivateAlertDiv('visible', 'AlertDiv', elem.value + '被单击, 正在获取系统时间'); 
    } 

    function EndRequestHandler(sender, args) 
    { 
        ActivateAlertDiv('hidden', 'AlertDiv', ''); 
    } 

    function ActivateAlertDiv(visstring, elem, msg) 
    { 
        var adiv = $get(elem); 
        adiv.style.visibility = visstring; 
        adiv.innerHTML = msg; 
    } 

</ script >  


    
< asp:UpdatePanel  ID ="UpdatePanel1"  UpdateMode ="Conditional"  runat ="Server" >  
        
< ContentTemplate >  
       
< asp:Panel  ID ="Panel1"  runat ="server"  GroupingText ="Update Panel的例子" >  
        最后一次更新时间: 
        
< %= DateTime .Now.ToString()% >
        
< br  />  
        
< asp:Button  runat ="server"  ID ="Button1"  Text ="第一个按钮"  OnClick ="ProcessClick_Handler"   />  
        
< asp:Button  runat ="server"  ID ="Button2"  Text ="第二个按钮"  OnClick ="ProcessClick_Handler"   />  
        
</ asp:Panel >  
        
</ ContentTemplate >  
    
</ asp:UpdatePanel >  
        
< div  id ="AlertDiv"  class ="AlertStyle" >  
        
</ div >
    
</ div >
    
</ form >
</ body >
</ html >
相关asp.cs代码:
using  System;
using  System.Data;
using  System.Configuration;
using  System.Collections;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

public   partial   class  AjaxDemo : System.Web.UI.Page
{
    
protected   void  Page_Load( object  sender, EventArgs e)
    {

    }

    
protected   void  ProcessClick_Handler( object  sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(
2000 );
    }
}
















本文转自周金桥51CTO博客,原文链接: http://blog.51cto.com/zhoufoxcn/167002  ,如需转载请自行联系原作者
相关文章
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET AJAX使用方法概述(三)
ASP.NET AJAX使用方法概述(三)
29 1
|
24天前
|
XML 前端开发 JavaScript
JavaScript进阶 - AJAX请求与Fetch API
【7月更文挑战第3天】前端开发中的异步基石:AJAX与Fetch。AJAX,使用XMLHttpRequest,处理跨域、回调地狱和错误处理。Fetch,基于Promise,简化请求,但需注意默认无跨域头和HTTP错误处理。两者各有优劣,理解其问题与解决策略,能提升前端应用的性能和用户体验。
|
1月前
|
前端开发 Python
Django框架中Ajax GET与POST请求的实战应用
Django框架中Ajax GET与POST请求的实战应用
|
18天前
|
XML 前端开发 JavaScript
JavaScript进阶 - AJAX请求与Fetch API
【7月更文挑战第9天】JavaScript进阶:AJAX与Fetch API对比。AJAX用于异步数据交换,XMLHttpRequest API复杂,依赖回调。Fetch API是现代、基于Promise的解决方案,简化请求处理。示例:`fetch(&#39;url&#39;).then(r =&gt; r.json()).then(data =&gt; console.log(data)).catch(err =&gt; console.error(err))`。注意点包括检查HTTP状态、错误处理、CORS、Cookie和超时。Fetch提高了异步代码的可读性,但需留意潜在问题。
|
1月前
|
NoSQL 大数据 Redis
分享5款.NET开源免费的Redis客户端组件库
分享5款.NET开源免费的Redis客户端组件库
|
2月前
|
JSON 前端开发 JavaScript
Fetch API与Ajax请求
Fetch API是JavaScript的一种新方法,用于网络请求,提供简洁的Promise-based语法和更多功能,如处理头、取消请求及跨域支持,比Ajax更强大。尽管不完全替代Ajax,尤其在老浏览器或需要底层控制时,Fetch API仍是现代浏览器中获取资源的优选工具。例如,以下代码展示了如何使用Fetch API进行GET和POST请求。
|
1月前
|
JSON 前端开发 JavaScript
Django——Ajax请求
Django——Ajax请求
|
2月前
|
XML JSON 前端开发
学习Ajax使用异步对象发送请求
Ajax,全称Asynchronous JavaScript and XML(异步JavaScript和XML),是一种用于创建更好、更快以及交互性更强的Web应用程序的技术。
39 3
|
2月前
|
JSON 编解码 Go
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第25天】Go语言`net/http`包提供HTTP客户端和服务器功能,简化高性能网络应用开发。本文探讨如何发起HTTP请求,常见问题及解决策略。示例展示GET和POST请求的实现。注意响应体关闭、错误处理、内容类型设置、超时管理和并发控制。最佳实践包括重用`http.Client`,使用`context.Context`,处理JSON以及记录错误日志。通过实践这些技巧,提升HTTP编程技能。
44 1
|
2月前
|
Go 开发者
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第24天】Go语言的`net/http`包在HTTP客户端编程中扮演重要角色,但使用时需注意几个常见问题:1) 检查HTTP状态码以确保请求成功;2) 记得关闭响应体以防止资源泄漏;3) 设置超时限制,避免长时间等待;4) 根据需求处理重定向。理解这些细节能提升HTTP客户端编程的效率和质量。
36 1