js中XMLHttpRequest对象实现GET、POST异步传输

  1 /*
  2  * 统一XHR接口
  3  */
  4 function createXHR() {
  5     // IE7+,Firefox, Opera, Chrome ,Safari
  6     if(typeof XMLHttpRequest != "undefined") {
  7         return new XMLHttpRequest();
  8     }
  9     // IE6-
 10     else if(typeof ActiveXObject != "undefined"){
 11         if(typeof arguments.callee.activeXString != "string") {
 12             var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "MSXMLHttp"],
 13             i, len;
 14             for(i = 0, len = versions.length; i < len; i++) {
 15                 try{
 16                     new ActiveXObject(versions[i]);
 17                     arguments.callee.activeXString = versions[i];
 18                     break;
 19                 }catch(ex) {
 20                     alert("请升级浏览器版本");
 21                 }
 22             }
 23         }
 24         return arguments.callee.activeXString;
 25     }else {
 26         throw new Error("XHR对象不可用");
 27     }
 28 }
 29
 30 var xhr = createXHR();
 31 // 定义xhr对象的请求响应事件
 32 xhr.onreadystatechange = function() {
 33     switch(xhr.readyState) {
 34         case 0 :
 35             //alert("请求未初始化");
 36             break;
 37         case 1 :
 38             //alert("请求启动,尚未发送");
 39             break;
 40         case 2 :
 41             //alert("请求发送,尚未得到响应");
 42             break;
 43         case 3 :
 44             //alert("请求开始响应,收到部分数据");
 45             break;
 46         case 4 :
 47             alert("请求响应完成得到全部数据");
 48             if((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {
 49                 var    data = xhr.responseText;
 50                 alert(data);
 51             }else {
 52                 alert("Request was unsuccessful : " + xhr.status + " " + xhr.statusText);
 53             }
 54             break;
 55     }
 56 };
 57 /*
 58 // get请求
 59 // get请求添加查询参数
 60 function urlParam(url, name, value) {
 61     url += (url.indexOf(‘?‘) == -1 ) ? ‘?‘ : ‘&‘ ;
 62     url += encodeURIComponent(name) + "=" + encodeURIComponent(value);
 63     return url;
 64 }
 65
 66 // get请求
 67 url = urlParam("example.php","name","ccb");
 68 url = urlParam(url,"pass","123");
 69 xhr.open("get", url ,true);
 70 xhr.send(null);*/
 71
 72 // post请求
 73 // 格式化post 传递的数据
 74 function postDataFormat(obj){
 75     if(typeof obj != "object" ) {
 76         alert("输入的参数必须是对象");
 77         return;
 78     }
 79
 80     // 支持有FormData的浏览器(Firefox 4+ , Safari 5+, Chrome和Android 3+版的Webkit)
 81     if(typeof FormData == "function") {
 82         var data = new FormData();
 83         for(var attr in obj) {
 84             data.append(attr,obj[attr]);
 85         }
 86         return data;
 87     }else {
 88         // 不支持FormData的浏览器的处理
 89         var arr = new Array();
 90         var i = 0;
 91         for(var attr in obj) {
 92             arr[i] = encodeURIComponent(attr) + "=" + encodeURIComponent(obj[attr]);
 93             i++;
 94         }
 95         return arr.join("&");
 96     }
 97 }
 98
 99 // post请求
100 var data = {name : "ccb" , pass : "123"};
101 xhr.open("post", "example.php", true);
102 // 不支持FormData的浏览器的处理
103 if(typeof FormData == "undefined") {
104     xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
105 }
106 xhr.send(postDataFormat(data));
时间: 2024-10-13 00:15:17

js中XMLHttpRequest对象实现GET、POST异步传输的相关文章

swfupload js中 file 对象的属性

name=3cc68cfc60b87e6dd6887d8a.jpg modificationdate=Wed   Apr 21 15:48:30 UTC+0800 2010 filestatus=-1 post=[object   Object] type=.jpg index=0 size=29006 creationdate=Wed Apr 21 15:48:38 UTC+0800   2010 id=SWFUpload_0_0swfupload js中 file 对象的属性,布布扣,bub

js实现小时钟,js中Date对象的使用?

介绍一下js中Date对象的使用 dateObj = new Date() dateObj = new Date(dateValue) dateObj = new Date(year,month,date[,hours[,minutes[,seconds[,ms]]]]); 以下有一个小样例 <script type="text/javascript"> function setTime(){ //获得如今的时间 var now = new Date(); var year

js中推断对象详细类型

大家可能知道js中推断对象类型能够用typeof来推断. 看以下的情况 <script> alert(typeof 1);//number alert(typeof "2");//string alert(typeof [1,2,3]);//object alert(typeof {"name":"zhuhui"})//object </script> 从上面中我们能够看出数组和普通对象用typeof推断出来都是objec

js中window对象详解以及页面跳转

js中window对象详解以及页面跳转 转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%90%9C/39219.shtml 1.window.top.window.location = "index.asp"; 2.window.top.location.href="index.asp" 3. window.top.location.replace("index.asp");

JS中有关对象的继承以及实例化、浅拷贝深拷贝的奥秘

一.属性的归属问题 JS对象中定义的属性和方法如果不是挂在原型链上的方法和属性(直接通过如类似x的方式进行定义)都只是在该对象上,对原型链上的没有影响.对于所有实例共用的方法可直接定义在原型链上这样实例化的的时候就不用对每个实例定义该属性方法,所有的实例均具有该方的引用见最后的输出. function Myclass(){ this.x=" x in Myclass"; this.get=function(){}//每次实例化对象,每个对象的该方法都是独立的,是不相同的 } Mycla

JavaScript学习12 JS中定义对象的几种方式【转】

avaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript

JS中的对象和方法简单剖析

众所周知,在js中对象就是精髓,不理解对象就是不理解js. 那么什么事js中的对象呢? 在js中,几乎一切皆对象: Boolean ,String,Number可以是对象(或者说原生数据被认作对象): Dates ,Maths,Regexps,Arrays,Funcitons,当然Objects,这些都是对象: JS中,所有值,除了原生值,都是对象:这些原生值包括:strings,numbers('3.14'),true,false,null和undefined 对象是包含变量的变量,js变量可

JavaScript学习12 JS中定义对象的几种方式

JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript"> var object = new Object(); object.name

浅解析js中的对象

浅解析js中的对象 说到对象,我首先想到的是每逢过年过节,长辈们老是开玩笑的问我“你找了对象没?”.不说大家都知道,这里的“对象”指的是“女朋友”,但是今天我想要说的js中的“对象”和我们生活中谈到的“对象”不是同一回事,但是其中也有着很多相似之处.    在讲js中的对象之前,我想先抛出几个疑问:    什么是对象?    对象有哪些?    对象能做什么?    如何创建对象?    如何对对象进行操作?    对象有特性么?有的话有哪些特性?    对象有属性么?有的话有哪些?对属性如何操