科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用.net 处理xmlHttp发送异步请求

用.net 处理xmlHttp发送异步请求

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

   最近正在拜读<>这本书,运用书中知识,结合.net,写了这篇用.net 处理xmlHttp发送异步请求的文章。 我们要达到的目的是点击按钮,获得服务器的当前时间。

作者:中国IT实验室 来源:中国IT实验室 2007年10月2日

关键字: 处理 编程

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

  

     最近正在拜读<<Ajax in Action>>这本书,运用书中知识,结合.net,写了这篇用.net 处理xmlHttp发送异步请求的文章。
  
  我们要达到的目的是点击按钮,获得服务器的当前时间,aspx的html如下:
  Html
  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Linkedu.Web.WebWWW.Default" %>
  
  <!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>测试</title>
   <script language="javascript" src="javascript/prototype/extras-array.js"></script>
   <script language="javascript" src="javascript/xmlHttp.js"></script>
   <script language="javascript" src="javascript/eventRouter.js"></script>
   <script language="javascript" src="Default.js"></script>
   <script language="javascript">
  
   </script>
  </head>
  <body>
   <form id="form1" runat="server">
   用Post方式获得服务器的当前时间
   <input id="btnTestPost" type="button" value="Post" />
   用Get方式获得服务器的当前时间
   <input id="btnTestGet" type="button" value="Get" />
   <div id="divResult"></div>
  </form>
  </body>
  </html>
  
  要用javascript 发送xmlHttp 请求必须解决的问题是跨浏览器的支持。我们把xmlHttp的发送封装在一个javascript对象中,同时在这个对象中解决了跨浏览器支持的问题。代码如下:
  
  xmlHttp对象
  /**//*
  url-loading object and a request queue built on top of it
  */
  
  /**//* namespacing object */
  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;
  
  
  /**//*--- content loader object for cross-browser requests ---*/
  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());
  } 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章