xhrGet 是 XHR 框架中最重要的函数,使用频率也最高。使用它即可以请求服务器上的静态文本资源如 txt、xml 等,也可以获取动态页面 php、jsp、asp 等,只要从服务器返回的是字符数据流即可。
除了 xhrGet,Dojo 的 XHR 框架还包含 xhrPost,rawXhrPost,xhrPut,rawXhrPut,xhrDelete 。这几个函数与 xhrGet 类似,使用方法和参数都可以参考 xhrGet 。区别在于他们的 HTTP 请求类型,xhrPost 发送的是 Post 请求,xhrPut 发送的是 Put 请求,xhrDelete 发生的是 Delete 请求。
下面我们看几个实例:
1、使用 xhrGet 请求文本资源
客户端——
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="HelloDojoAjax.aspx.cs" Inherits="DojoTest.HelloDojoAjax" %>
服务端资源——
hello world!!Dojo!
2、使用 xhrGet 获取Json数据
客户端——
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DojoAjaxJson.aspx.cs" Inherits="DojoTest.DojoAjaxJson" %><%-- 引入 Dojo--%>
服务端——
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace JqueryAjaxTest.Data{ public partial class GetCity : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string result = @"[{""ProvinceId"":""BJ"",""CityName"":""北京""}, {""ProvinceId"":""TJ"",""CityName"":""天津""}]"; //清空缓冲区 Response.Clear(); //将字符串写入响应输出流 Response.Write(result); //将当前所有缓冲的输出发送的客户端,并停止该页执行 Response.End(); } }}
3、使用xhrGet提交表单
客户端——
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DojoAjaxText.aspx.cs" Inherits="DojoTest.DojoAjaxText" %>服务端——<%-- 引入 Dojo--%>
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace DojoTest{ public partial class GetService : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string id = ""; string pwd = ""; //获取参数 if (!String.IsNullOrEmpty(HttpContext.Current.Request["UserID"]) && !String.IsNullOrEmpty(HttpContext.Current.Request["Password"])) { id = HttpContext.Current.Request["UserID"]; pwd=HttpContext.Current.Request["Password"]; } //清空缓冲区 Response.Clear(); //将字符串写入响应输出流 Response.Write("用户输入id为:"+id+",输入密码为:"+pwd); //将当前所有缓冲的输出发送的客户端,并停止该页执行 Response.End(); } }}
注意:
1、
回调函数PrintResult包含两个参数:response 和 ioArgs。
response:表示从服务器端返回的数据,Dojo 已经根据 handleAs 设置的数据类型进行了预处理。
ioArgs: 这是一个对象,包含调用 xhrGet 时使用的一些参数。之所以把这些信息放在一个对象中并传递给回调函数是为了给回调函数一个执行“上下文”,让回调函数知道自己属于哪个 HTTP 请求,请求有哪些参数,返回的数据是什么类型等。这些信息在调试程序时特别有用。
ioArgs.url:请求的 URL,与调用 xhrGet 时设置的值一样。
ioArgs.query:请求中包含的参数, URL 中“ ? ”后面的内容。
ioArgs.handAs:如何对返回的数据进行预处理,与调用 xhrGet 时设置的值一样。
ioArgs.xhr: xhrGet 函数使用的 XHR 对象。
2、handleAs(预处理方式)
text:默认值,不对返回的数据做任何处理
xml:返回 XHR 对象的 responseXML
javascript:使用 dojo.eval 处理返回的数据,返回处理结果
json:使用 dojo.fromJSon 来处理返回的数据,返回生成的 Json 对象
json-comment-optional:如果有数据包含在注释符中,则只使用 dojo.fromJSon 处理这部分数据,如果没有数据包含在注释符中,则使用 dojo.fromJSon 处理全部数据。
json-comment-filtered:数据应该包含在 /* … */ 中,返回使用 dojo.fromJSon 生成的 Json 对象,如果数据不是包含在注释符中则不处理。
3、代码中的注释,也说明了一些值得注意的地方。