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,具体如下图所示:

2.WebRequestDemo.aspx中HTML代码如下:
- <%@ Page Language="C#" AutoEventWireup="true"
- CodeBehind="WebRequestDemo.aspx.cs"
- Inherits="AspNetAjaxDemo.WebRequestDeme" %>
- <!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>WebRequest Demo</title>
- <script language="javascript" type="text/javascript">
- // <!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());
- }
- }
- // ]]>
- </script>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <asp:ScriptManager ID="ScriptManagerDemo" runat="server">
- </asp:ScriptManager>
- </div>
- </form>
- <p>
- name:<input id="txtName" type="text" />
- <input id="btnHello" type="button"
- value="Hello" onclick="return btnHello_onclick()" /></p>
- </body>
- </html>
- namespace AspNetAjaxDemo
- {
- /// <summary>
- /// Ajax Response Handler
- /// </summary>
- [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;
- }
- }
- }
- }