AJax技术

Ajax 与异步数据传输(3)

字号+ 作者:H5之家 来源:H5之家 2017-03-24 16:02 我要评论( )

简单模仿 jQuery 中 $.ajax() 方法 (function(){ // Ajax 选项 var options = {type: "GET", //提交方式url: "", //路径params: {}, //请求参数dataType: "text", //内容类型success: function(){}, //回调函数erro

简单模仿 jQuery 中 $.ajax() 方法

(function(){ // Ajax 选项 var options = { type: "GET", //提交方式 url: "", //路径 params: {}, //请求参数 dataType: "text", //内容类型 success: function(){}, //回调函数 error: function(){} }; //获取 XMLHTTPRequest 对象 var createRequest = function(){ var xmlhttp; if(xmlhttp.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); } else{ xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); } if(xmlhttp.overrideMimeType){ xmlhttp.overrideMimeType('text/xml'); //修改 MIME 类型 } return xmlhttp; }, // 设定 Ajax 选项 var setOptions = function(newOptions){ for(var prop in newOptions){ if(newOptions.hasOwnProperty(prop)){ this.option[prop] = newOptions[prop]; } } }, //格式化参数列表 var formatParameters = function(){ var paramsArr = []; var params = this.options.params; for(var prop in params){ if(params.hasOwnProperty(prop)){ paramsArr.push(prop + "=" + encodeURIComponent(params[prop])); } } return paramsArr.join('&'); }, //预处理并调用相应函数 var readystatechange = function(xmlhttp){ var returnValue; if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ switch(this.options.dataType){ case 'xml': returnValue = ; break; case'json': returnVaue = xmlhttp.responseText; if(returnValue){ returnValue = ("(" + returnValue + ")"); } break; default: returnVaue = xmlhttp.responseText; break; } if(returnValue){ this.options.success(returnValue); } else{ this.options.success(); } } else{ this.options.error(); } }, //发送请求,也就是$.ajax()函数 var request = function(options){ // var ajaxObj = this; var xmlhttp = this.createRequest(); this.setOptions(options); xmlhttp.onreadystatechange = this.readystatechange.bind(null, xmlhttp); var formatParams = this.formatParameters(); var type = this.options.type; var url = this.options.url; if("GET" === type.toUpperCase()){ url += "?" + formatParameters; } xmlhttp.open(type, url, true); if("GET" === type.toUpperCase()){ xmlhttp.send(); } else if("POST" === type.toUpperCase()){ xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlhttp.send(formatParameters); } } window.$.ajax = request; //暴露方法到闭包外面去 })();

Tags:ajax   xml   异步   json   jsonp    

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 《邮电设计技术》2007年07期

    《邮电设计技术》2007年07期

    2017-03-24 17:00

  • 用户登录检测ajax技术

    用户登录检测ajax技术

    2017-03-24 15:04

  • 基于AJAX技术的电大网上学习平台的设计与实现

    基于AJAX技术的电大网上学习平台的设计与实现

    2017-03-24 14:01

  • 《职教与经济研究(娄底职业技术学院学报)》2010年01期

    《职教与经济研究(娄底职业技术学院学报)》2010年01期

    2017-03-24 14:00

网友点评