天天看點

asp.net ajax1.0基礎回顧(二):經典模式

asp.net ajax提供經典的異步請求/響應模式的用戶端JS對象Sys.Net.WebRequest,本文将隻對Sys.Net.WebRequest的進行介紹。若想深入了解相關的其它JS對象,可以去翻閱幾千行的MicrosoftAjax.debug.js檔案。

執行個體化:

var req = new Sys.Net.WebRequest();

成員:

<b>成員名稱</b>

<b></b>

<b>描述</b>

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,具體如下圖所示:

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

&lt;%@ Page Language="C#" AutoEventWireup="true" 

CodeBehind="WebRequestDemo.aspx.cs" 

Inherits="AspNetAjaxDemo.WebRequestDeme" %&gt; 

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 

Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; 

&lt;html xmlns="http://www.w3.org/1999/xhtml" &gt; 

&lt;head runat="server"&gt; 

    &lt;title&gt;WebRequest Demo&lt;/title&gt; 

&lt;script language="javascript" type="text/javascript"&gt; 

// &lt;!CDATA[ 

function btnHello_onclick() { 

    var req,name; 

    name = $get("txtName").value; 

    req = new Sys.Net.WebRequest(); 

    req.add_completed(OnSuccess); 

    req.set_httpVerb("POST"); 

    req.set_url("AjaxResponseHandler.ashx"); 

    req.set_body("name="+name); 

    /* 

    //or GET 

    req.set_httpVerb("GET"); 

    req.set_url("AjaxResponseHandler.ashx?name="+name); 

    // no body 

    */ 

    req.invoke(); 

function OnSuccess(executor, context){ 

    if(executor.get_responseAvailable()) 

    { 

        alert(executor.get_responseData()); 

    } 

// ]]&gt; 

&lt;/script&gt; 

&lt;/head&gt; 

&lt;body&gt; 

    &lt;form id="form1" runat="server"&gt; 

    &lt;div&gt; 

        &lt;asp:ScriptManager ID="ScriptManagerDemo" runat="server"&gt; 

        &lt;/asp:ScriptManager&gt; 

    &lt;/div&gt; 

    &lt;/form&gt; 

    &lt;p&gt; 

        name:&lt;input id="txtName" type="text" /&gt;

&lt;input id="btnHello" type="button"  

            value="Hello" onclick="return btnHello_onclick()" /&gt;&lt;/p&gt; 

&lt;/body&gt; 

&lt;/html&gt; 

 3.AjaxResponseHandler.ashx代碼如下:

namespace AspNetAjaxDemo 

    /// &lt;summary&gt; 

    /// Ajax Response Handler 

    /// &lt;/summary&gt; 

    [WebService(Namespace = "http://tempuri.org/")] 

    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 

    public class AjaxResponseHandler : IHttpHandler 

        public void ProcessRequest(HttpContext context) 

        { 

            String name; 

            context.Response.ContentType = "text/plain"; 

            name = context.Request["name"]; 

            context.Response.Write(String.Format("Hello {0}", name)); 

        } 

        public bool IsReusable 

            get 

            { 

                return false; 

            } 

4.開始測試。

<a href="http://blog.51cto.com/attachment/201106/180443467.jpg" target="_blank"></a>

 參考頁面:

1.[Sys.Net.WebRequest class]http://www.asp.net/ajaxlibrary/Reference.Sys-Net-WebRequest-Class.ashx

本文轉自 彭金華  51CTO部落格,原文連結:http://blog.51cto.com/pengjh/591505

繼續閱讀