`
tongdayong
  • 浏览: 2855 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

XMLHttpRequest v1.1

阅读更多
/**//*

Cross-Browser XMLHttpRequest v1.1
=================================

Emulate Gecko 'XMLHttpRequest()' functionality in IE and Opera. Opera requires
the Sun Java Runtime Environment <http://www.java.com/>.

by Andrew Gregory
http://www.scss.com.au/family/andrew/webdesign/xmlhttprequest/

This work is licensed under the Creative Commons Attribution License. To view a
copy of this license, visit http://creativecommons.org/licenses/by/1.0/ or send
a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
USA.

Not Supported in Opera
----------------------
* user/password authentication
* responseXML data member

Not Fully Supported in Opera
----------------------------
* async requests
* abort()
* getAllResponseHeaders(), getAllResponseHeader(header)

*/

// IE support
if (window.ActiveXObject && !window.XMLHttpRequest) {
  window.XMLHttpRequest 
= function() {
    
return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
  }
;
}

// Gecko support
/**//* ;-) */
// Opera support
global_fakeOperaXMLHttpRequestSupport = false;
//if (window.opera && !window.XMLHttpRequest) { THIS IS COMMENTED OUT BECAUSE OPERA 8 has window.XMLHttpRequest but still does not support setRequestHeader
if (window.opera) {
    global_fakeOperaXMLHttpRequestSupport 
= true;
  window.XMLHttpRequest 
= function() {
    
this.readyState = 0// 0=uninitialized,1=loading,2=loaded,3=interactive,4=complete
    this.status = 0// HTTP status codes
    this.statusText = '';
    
this._headers = [];
    
this._aborted = false;
    
this._async = true;
    
this.abort = function() {
      
this._aborted = true;
    }
;
    
this.getAllResponseHeaders = function() {
      
return this.getAllResponseHeader('*');
    }
;
    
this.getAllResponseHeader = function(header) {
      
var ret = '';
      
for (var i = 0; i < this._headers.length; i++{
        
if (header == '*|| this._headers[i].h == header) {
          ret 
+= this._headers[i].h + ': ' + this._headers[i].v + '\n';
        }

      }

      
return ret;
    }
;
    
this.setRequestHeader = function(header, value) {
      
this._headers[this._headers.length] = {h:header, v:value};
    }
;
    
this.open = function(method, url, async, user, password) {
        
        
//alert(method+"]["+url+"]["+async+"]["+user+""+""+"");
      this.method = method;
      
this.url = url;
      
this._async = true;
      
this._aborted = false;
      
if (arguments.length >= 3{
        
this._async = async;
      }

      
if (arguments.length > 3{
        
// user/password support requires a custom Authenticator class
        opera.postError('XMLHttpRequest.open() - user/password not supported');
      }

      
this._headers = [];
      
this.readyState = 1;
      
if (this.onreadystatechange) {
        
this.onreadystatechange();
      }

    }
;
    
this.send = function(data) {
      
if (!navigator.javaEnabled()) {
        alert(
"XMLHttpRequest.send() - Java must be installed and enabled.");
        
return;
      }

      
if (this._async) {
        setTimeout(
this._sendasync, 0this, data);
        
// this is not really asynchronous and won't execute until the current
        // execution context ends
      }
 else {
        
this._sendsync(data);
      }

    }

    
this._sendasync = function(req, data) {
      
if (!req._aborted) {
        req._sendsync(data);
      }

    }
;
    
this._sendsync = function(data) {
      
this.readyState = 2;
      
if (this.onreadystatechange) {
        
this.onreadystatechange();
      }

      
// open connection
      var url = new java.net.URL(new java.net.URL(window.location.href), this.url);
      
var conn = url.openConnection();
      
for (var i = 0; i < this._headers.length; i++{
        conn.setRequestProperty(
this._headers[i].h, this._headers[i].v);
      }

      
this._headers = [];
      
if (this.method == 'POST') {
        
// POST data
        conn.setDoOutput(true);
        
var wr = new java.io.OutputStreamWriter(conn.getOutputStream());
        wr.write(data);
        wr.flush();
        wr.close();
      }

      
// read response headers
      // NOTE: the getHeaderField() methods always return nulls for me :(
      var gotContentEncoding = false;
      
var gotContentLength = false;
      
var gotContentType = false;
      
var gotDate = false;
      
var gotExpiration = false;
      
var gotLastModified = false;
      
for (var i = 0; ; i++{
        
var hdrName = conn.getHeaderFieldKey(i);
分享到:
评论

相关推荐

    备案批量查询 v1.1

    备案批量查询 v1.1 是一个基于 ASP 技术开发的源码程序,主要用于批量查询网站的ICP(Internet Content Provider)备案信息。ASP,全称为Active Server Pages,是微软推出的一种服务器端脚本环境,它允许开发者创建...

    琥珀联动菜单-AJAX版 [HPMenu V1.1]

    琥珀联动菜单-AJAX版 [HPMenu V1.1] 是一款专为网页设计者打造的高效交互组件,主要用于实现动态的、基于Ajax技术的下拉菜单功能。这款组件利用Ajax(异步JavaScript和XML)技术,可以无刷新地更新页面部分区域,...

    基于ASP的星外对接DNSPOD接口完整代码 v1.1 ASP.zip

    【标题】"基于ASP的星外对接DNSPOD接口完整代码 v1.1 ASP.zip" 涉及的核心技术是ASP(Active Server Pages)和DNSPOD接口的对接。ASP是一种微软开发的服务器端脚本环境,用于创建动态网页或Web应用程序。而DNSPOD则...

    ASP jQuery AJAX无刷新评论 v1.1.rar

    在这个“ASP jQuery AJAX无刷新评论 v1.1”的项目中,开发者利用这些技术实现了页面无刷新的评论系统,使得用户在提交评论时无需等待整个页面重新加载,极大地提升了用户的使用体验。 首先,ASP(Active Server ...

    炫客无刷新聊天室 v1.1 ASP版.rar

    【炫客无刷新聊天室 v1.1 ASP版.rar】是一个基于ASP技术并结合JavaScript(AJAX)实现的在线实时聊天室系统。该系统的主要特点是实现了无刷新通信,即用户在聊天过程中无需手动刷新页面就能实时看到其他人的消息,极...

    ASP源码—仿站长站收录查询工具 v1.1.zip

    这个"ASP源码—仿站长站收录查询工具 v1.1.zip"的压缩包文件显然包含了一个基于ASP技术的网站应用,该应用旨在模仿知名站长站的功能,帮助用户查询他们的网站是否被搜索引擎收录。 在ASP编程中,开发者可以使用...

    基于ASP的高仿admin5站长网址大全带后台 v1.1.1019.zip

    【标题】"基于ASP的高仿admin5站长网址大全带后台 v1.1.1019.zip"指的是一个使用Active Server Pages (ASP)技术开发的网站程序,它旨在模仿知名站长平台admin5的功能和界面设计。这个版本号1.1.1019代表了该软件的一...

    ASP源码—Fate 风铃ASP留言本 v1.1.zip

    Fate风铃ASP留言本v1.1是一款基于ASP技术的网站互动组件,它允许网站访客留下他们的信息,提高用户参与度并促进沟通。 在这款源码中,我们可以期待看到以下关键知识点: 1. **ASP基本结构与语法**:ASP文件通常以`...

    某化工贸易有限公司网站 v1.1-ASP源码.zip

    在"某化工贸易有限公司网站 v1.1-ASP源码.zip"这个压缩包中,可能包含的是该公司网站的源代码,用于展示如何利用ASP技术构建一个企业级的网站。源码通常包括了ASP文件、HTML模板、CSS样式表、JavaScript脚本以及可能...

    ASP源码—星外对接DNSPOD接口完整代码 v1.1 ASP.zip

    总结来说,这个"ASP源码—星外对接DNSPOD接口完整代码 v1.1 ASP.zip"的资源提供了一套ASP程序,用于与DNSPOD服务进行接口通信,实现对DNS记录的自动化管理。通过学习和运用这段代码,可以提升服务器管理和自动化运维...

    随风ASP多人聊天室 v1.1

    《随风ASP多人聊天室 v1.1》是一款基于ASP技术构建的实时交流平台,旨在提供高效率且稳定的多人在线聊天功能。在V1.1版本中,开发团队对产品进行了重要的更新和优化,显著提升了系统的性能和用户体验。 首先,核心...

    【PHP项目源码-毕业设计期末大作业】西安朴凡广告企业内部公告系统 v1.1_xadesign.org.zip

    该资源是一个基于PHP的毕业设计项目,名为“西安朴凡广告企业内部公告系统”,版本为v1.1,由xadesign.org提供。这个系统旨在为企业的内部沟通和信息传递提供一个便捷、高效的平台。通过分析这个项目的源代码,我们...

    haltiademo-v1.1:哈蒂亚演示

    haltiademo-v1.1是哈蒂亚演示项目的一个版本,这个版本号为1.1。根据提供的信息,我们可以推测这是一个用于展示或教学目的的项目,可能是为了展示JavaScript技术的应用。"haltiademo-v1.1-master"这个压缩包文件名...

    炫客无刷新聊天室 v1.1

    【炫客无刷新聊天室 v1.1】是一款基于ASP和JavaScript(AJAX技术辅助)构建的实时聊天室系统,其特色在于实现了页面无刷新的交互体验,为用户提供流畅的在线沟通环境。这款个人版和商业版终身可用的程序虽然并非最终...

    Oxhr:一个基于Promise的异步XMLHttpRequest(XHR)包装库

    奥克斯v1.1 面向对象的XHR(XMLHttpRequest)包装器/库。现代程序员使用fetch,其他人则喜欢Oxhr :cow_face:为什么选择Oxhr? 基于承诺(异步) 微小(最小2kb),非常简单准备将ES模块oxhr.min.js用于您JavaScript...

    第十八课 ajax1

    安装完成后,通过在终端输入 `node -v` 和 `npm -v` 来验证安装是否成功。 ### **2. 启动测试服务接口** 将提供的测试服务接口文件拷贝到一个新建的项目文件夹中,并使用 VSCode 打开。在终端中,运行 `npm install...

    前端axios-0.19.2的配置

    axios允许你提供自定义的网络适配器,例如在特殊环境下使用fetch API或XMLHttpRequest替代默认的适配器: ```javascript axios.defaults.adapter = require('axios/adapters/xhr'); ``` ### Cancel Tokens axios...

    ASP版QQ在线聊天系统

    "25175 QQ在线聊天系统v1.1.txt"可能是版本信息和开发者记录。"IMAGES_A"可能是一个目录,存储了系统所需的图片资源。 实现ASP版QQ在线聊天系统的关键技术包括: 1. **AJAX**:通过XMLHttpRequest对象异步与服务器...

    Ajax.in.Practice.pdf

    本书由Dave Crane、Bear Bibeault、Joris Evers、Ted Goddard、Chris Gray、Ram V. Enkataraman 和 Joe Walker 共同编写,并由 Manning Publications 出版。 ### Ajax:一种颠覆性技术 #### 1.1 Ajax作为一种颠覆...

    websockets-v-http:这测试了 websockets 与普通旧 http 的性能,用于将字符串数据发送到服务器

    WebSocket API被设计成与HTTP兼容,通过HTTP/1.1的Upgrade头字段进行升级,一旦连接建立,就不再依赖HTTP。 **HTTP** HTTP(超文本传输协议)是一种无状态、请求-响应式的协议,主要用于从Web服务器获取资源。传统...

Global site tag (gtag.js) - Google Analytics