欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【用.net 处理xmlHttp发送异步请求】,下面是详细的分享!
用.net 处理xmlHttp发送异步请求
最近正在拜读<<Ajax in Action>>这本书,运用书中知识,结合.net,写了这篇用.net 处理xmlHttp发送异步请求的文章。我们要达到的目的是点击按钮,获得服务器的当前时间,aspx的html如下:
| 以下为引用的内容: Html |
要用javascript 发送xmlHttp 请求必须解决的问题是跨浏览器的支持。我们把xmlHttp的发送封装在一个javascript对象中,同时在这个对象中解决了跨浏览器支持的问题。代码如下:
xmlHttp对象
| 以下为引用的内容: var net=new Object(); net.READY_STATE_UNINITIALIZED=0; net.READY_STATE_LOADING=1; net.READY_STATE_LOADED=2; net.READY_STATE_INTERACTIVE=3; net.READY_STATE_COMPLETE=4; net.xmlHttp=function(url, onload, params, method, contentType, onerror){ this.req=null; this.onload=onload; this.onerror=(onerror) ? onerror : this.defaultError; if(typeof(method)=="undefined" || method==null) { method="POST"; } this.loadXMLDoc(url, params, method, contentType); } net.xmlHttp.prototype.loadXMLDoc=function(url, params, method, contentType){ if (!method){ method="GET"; } if (!contentType && method=="POST"){ contentType='application/x-www-form-urlencoded'; } if (window.XmlHttpRequest){ this.req=new XmlHttpRequest(); } else if (window.ActiveXObject){ this.req=new ActiveXObject("Microsoft.xmlHttp"); } if (this.req){ try{ var loader=this; this.req.onreadystatechange=function(){ net.xmlHttp.onReadyState.call(loader); } this.req.open(method,url,true); if (contentType){ this.req.setRequestHeader('Content-Type', contentType); } this.req.send(params); }catch (err){ this.onerror.call(this); } } } net.xmlHttp.onReadyState=function(){ var req=this.req; var ready=req.readyState; if (ready==net.READY_STATE_COMPLETE){ var httpStatus=req.status; if (httpStatus==200 || httpStatus==0){ this.onload.call(this); }else{ this.onerror.call(this); } } } net.xmlHttp.prototype.defaultError=function(){ alert("error fetching data!" +"\n\nreadyState:"+this.req.readyState +"\nstatus: "+this.req.status +"\nheaders: "+this.req.getAllResponseHeaders()); } |
default.js
//全局xmlHttp对象
var cobj;
//绑定Post发送xmlHttp事件到btnTestPost
function loadTestPost()
{
var iobj=document.getElementById("btnTestPost");
//btnTestPost按钮监听的绑定
var clickRouter=new jsEvent.EventRouter(iobj,"onclick");
clickRouter.addListener(btnTestPostClick);
}
function btnTestPostClick()
{ // open参数 url, onload, params, method, contentType, onerror
cobj=new net.xmlHttp("DefaultHandler.ashx",dealResult, "<T/>", "POST");
}
//绑定Get发送xmlHttp事件到btnTestGet
function loadTestGet()
{
var iobj=document.getElementById("btnTestGet");
//btnTestGet按钮监听的绑定
var clickRouter=new jsEvent.EventRouter(iobj,"onclick");
clickRouter.addListener(btnTestGetClick);
}
function btnTestGetClick()
{ // open参数 url, onload, params, method, contentType, onerror
cobj=new net.xmlHttp("DefaultHandler.ashx?T=1",dealResult, null, "GET");
}
function dealResult()
{
var dobj=document.getElementById("divResult");
dobj.innerHTML=cobj.req.responseXML.text;
}
window.onload=function()
{
//绑定Post发送xmlHttp事件到btnTestPost
loadTestPost();
//绑定Get发送xmlHttp事件到btnTestGet
loadTestGet();
};
最后是.net处理xmlHttp的代码
.net 处理xmlHttp请求
public class DefaultHandler : IHttpHandler
{
protected XmlDocument _xmlResult;
public void ProcessRequest(HttpContext context)
{
if (context.Request["T"] !=null)
{//GET xmlhttp测试
context.Response.ContentType="text/xml";
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.LoadXml(string.Format(@"<time>GET:{0}</time>", System.DateTime.Now));
xmlDoc.Save(context.Response.OutputStream);
context.Response.End();
}
else
{//POST xmlhttp测试
context.Response.ContentType="text/xml";
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load(context.Request.InputStream);
if (xmlDoc.DocumentElement.Name=="T")
{
xmlDoc.LoadXml(string.Format(@"<time>POST:{0}</time>", System.DateTime.Now));
xmlDoc.Save(context.Response.OutputStream);
context.Response.End();
}
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
以上所分享的是关于用.net 处理xmlHttp发送异步请求,下面是编辑为你推荐的有价值的用户互动:
相关问题:asp.net 如何响应XMLHttpRequest提交来的异步请求
答:XMLHttpRequest 是以GET或POST访问的,你响应GET/POST就行, >>详细
相关问题:如何利用XMLHttpRequest实现向服务器发送请求
答:你好,使用XMLHttpRequest对象发送请求的基本步骤如下: 1. 为得到XMLHttpRequest对象实例的一个引用,可以创建一个新的实例,也可以访问包含有XMLHttpRequest实例的一个变量。 2. 告诉XMLHttpRequest对象,哪个函数会处理XMLHttpRequest对象状... >>详细
相关问题:通过XMLHttpRequest向aspx发送请求,怎么接受这个请求
答:Response.Write();//在页面输出 //ajax代码 function createXMLHttpRequest() { if (window.ActiveXObject) {//如果是IE浏览器 return new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) {//非IE浏览器 return new XM... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
