asp.net ajax1.0基础回顾(二):经典模式

asp.net ajax提供经典的异步请求/响应模式的客户端JS对象Sys.Net.WebRequest,本文将只对Sys.Net.WebRequest的进行介绍。若想深入了解相关的其它JS对象,可以去翻阅几千行的MicrosoftAjax.debug.js文件。

实例化
var req = new Sys.Net.WebRequest();

成员:

成员名称

描述

add_completed(evt)

注册一个回调事件

remove_completed(evt)

删除一个回调事件

completed(args)

请求完成事件

invoke()

开始请求

getResolvedUrl()

获取完整请求地址

get_body()

获取请求主体

set_body(args)

设置请求主体

get_executor()

获取执行器,默认为Sys.Net.XmlHttpExecutor()

set_executor(exe)

设置执行器

get_headers()

获取请求headers

get_httpVerb()

获取请求方式

set_httpVerb(verb)

设置请示方式

get_timeout()

获取超时时间

set_timeout(val)

设置超时时间

get_url ()

获取请求地址

get_url(url)

设置请求地址

get_userContext()

获取用户上下文,或称调用标记。

set_userContext(context)

设置用户上下文

 

简单示例

通过aspx和ashx来进行说明简单用法,具体如下:

1.创建Web应用程序项目AspNetAjaxDemo,新建WebRequestDemo.aspx前端请求页面和AjaxResponseHandler.ashx服务器端响应Handler,具体如下图所示:

 

asp.net ajax1.0基础回顾(二):经典模式

2.WebRequestDemo.aspx中HTML代码如下:


  1. <%@ Page Language="C#" AutoEventWireup="true" 
  2. CodeBehind="WebRequestDemo.aspx.cs" 
  3. Inherits="AspNetAjaxDemo.WebRequestDeme" %> 
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
  5. Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  6. <html xmlns="http://www.w3.org/1999/xhtml" > 
  7. <head runat="server"> 
  8.     <title>WebRequest Demo</title> 
  9. <script language="javascript" type="text/javascript"> 
  10. // <!CDATA[ 
  11.  
  12. function btnHello_onclick() { 
  13.     var req,name; 
  14.  
  15.     name = $get("txtName").value; 
  16.     req = new Sys.Net.WebRequest(); 
  17.     req.add_completed(OnSuccess); 
  18.  
  19.     req.set_httpVerb("POST"); 
  20.     req.set_url("AjaxResponseHandler.ashx"); 
  21.     req.set_body("name="+name); 
  22.     /* 
  23.     //or GET 
  24.     req.set_httpVerb("GET"); 
  25.     req.set_url("AjaxResponseHandler.ashx?name="+name); 
  26.     // no body 
  27.     */ 
  28.     req.invoke(); 
  29.  
  30. function OnSuccess(executor, context){ 
  31.     if(executor.get_responseAvailable()) 
  32.     { 
  33.         alert(executor.get_responseData()); 
  34.     } 
  35.  
  36. // ]]> 
  37. </script> 
  38. </head> 
  39. <body> 
  40.     <form id="form1" runat="server"> 
  41.     <div> 
  42.         <asp:ScriptManager ID="ScriptManagerDemo" runat="server"> 
  43.         </asp:ScriptManager> 
  44.     </div> 
  45.     </form> 
  46.     <p> 
  47.         name:<input id="txtName" type="text" />
  48. <input id="btnHello" type="button"  
  49.             value="Hello" onclick="return btnHello_onclick()" /></p> 
  50. </body> 
  51. </html> 
 3.AjaxResponseHandler.ashx代码如下:

  1. namespace AspNetAjaxDemo 
  2.     /// <summary> 
  3.     /// Ajax Response Handler 
  4.     /// </summary> 
  5.     [WebService(Namespace = "http://tempuri.org/")] 
  6.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
  7.     public class AjaxResponseHandler : IHttpHandler 
  8.     { 
  9.         public void ProcessRequest(HttpContext context) 
  10.         { 
  11.             String name; 
  12.             context.Response.ContentType = "text/plain"
  13.             name = context.Request["name"]; 
  14.             context.Response.Write(String.Format("Hello {0}", name)); 
  15.         } 
  16.  
  17.         public bool IsReusable 
  18.         { 
  19.             get 
  20.             { 
  21.                 return false
  22.             } 
  23.         } 
  24.     } 
4.开始测试。
asp.net ajax1.0基础回顾(二):经典模式
 
 
 
 参考页面:
1.[Sys.Net.WebRequest class]http://www.asp.net/ajaxlibrary/Reference.Sys-Net-WebRequest-Class.ashx


本文转自 彭金华  51CTO博客,原文链接:http://blog.51cto.com/pengjh/591505