标签:
开发的时候,可能项目中不需要加载jquery这种庞大的js插件。但又要使用到ajax这种功能该如何办呢?下面和大家分享几种利用javascript实现原生ajax的方法。
/* ajax */ var xmlHttp; function createxmlHttpRequest() { if (window.ActiveXObject) { xmlHttp = new ActiveXObject(‘Microsoft.XMLHTTP‘); } else if (window.XMLHttpRequest) xmlHttp = new XMLHttpRequest(); } function doGet(url) { //注意在传参数值的时候最好使用encodeURI处理一下,防止乱码 createxmlHttpRequest(); xmlHttp.open(‘GET‘, url); xmlHttp.send(null); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { alert(‘success‘); } else { alert(‘fail‘); } } } function doPost(url, data) { //注意在传参数值的时候最好使用encodeURI处理一下,防止乱码 createxmlHttpRequest(); xmlHttp.open(‘POST‘, url); xmlHttp.setRequestHeader(‘Content-Type‘, ‘application/x-www-form-urlencoded‘); xmlHttp.send(data); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { alert(‘success‘); } else { alert(‘fail‘); } } } var createAjax = function() { var xhr = null; try { //IE系列浏览器 xhr = new ActiveXObject(‘microsoft.xmlhttp‘); } catch(e1) { try { //非IE浏览器 xhr = new XMLHttpRequest(); } catch(e2) { window.alert(‘您的浏览器不支持ajax,请更换!‘); } } return xhr; }; var ajax = function(conf) { var type = conf.type; //type参数,可选 var url = conf.url; //url参数,必填 var data = conf.data; //data参数可选,只有在post请求时需要 var dataType = conf.dataType; //datatype参数可选 var success = conf.success; //回调函数可选 if (type == null) { //type参数可选,默认为get type = ‘get‘; } if (dataType == null) { //dataType参数可选,默认为text dataType = ‘text‘; } var xhr = createAjax(); xhr.open(type, url, true); if (type == ‘GET‘ || type == ‘get‘) { xhr.send(null); } else if (type == ‘POST‘ || type == ‘post‘) { xhr.setRequestHeader(‘content-type‘, ‘application/x-www-form-urlencoded‘); xhr.send(data); } xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { if (dataType == ‘text‘ || dataType == ‘TEXT‘) { if (success != null) { //普通文本 success(xhr.responseText); } } else if (dataType == ‘xml‘ || dataType == ‘XML‘) { if (success != null) { //接收xml文档 success(xhr.responseXML); } } else if (dataType == ‘json‘ || dataType == ‘JSON‘) { if (success != null) { //将json字符串转换为js对象 success(eval(‘(‘ + xhr.responseText + ‘)‘)); } } } }; }; /* 调用函数 */ ajax({ type:‘post‘,//post或者get,非必须 url:‘js/data.json‘,//必须的 // data:‘name=dipoo&info=good‘,//非必须 dataType:‘json‘,//text/xml/json,非必须 success:function(data){//回调函数,非必须 console.log(data); } });
标签:
原文地址:http://www.cnblogs.com/zion0707/p/5061471.html