原生Javascript HTTP请求
原生js封装HTTP请求
当在编程时,有时会需要juqery中的AJAX请求数据接口,但有时是由于需求等因素导致的用到原生的JavaScript进行请求,那么为了避免每次都是操作过多的代码,就进行封装一个公共的请求方法,后续直接调用即可请求数据接口
封装方法
function ajax(parmas,fun,errfun){
var http = null;
//创建XMLHttpRequest对象,
//老版本的 Internet Explorer (IE5 和 IE6)使用ActiveX对象:new ActiveXObject("Microsoft.XMLHTTP")
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else if(window.ActiveXObject){
xmlhttp = new AactiveXObject("Microsoft.XMLHTTP");
}
//判断是否支持请求
if(xmlhttp == null){
alert("您的浏览器不支持XMLHttp");
return
}
//请求方式转为大写
var httpType = (params.type || 'GET').toUpperCase();
//数据类型
var dataType = params.dataType || 'json';
//请求接口
var Url = parmas.url || '';
//是否异步请求
var async = params.async || true;
//请求参数 POST请求参数为: foo=bar&lorem=ipsum*/
var paramsData = params.data || [];
var requestData = '';
for( var name in paramsData){
requestData += name + ' paramsData[name] ' + '&';
}
requestData = requestData == '' ? requestData.substring(0,requestData.length - 1)
//请求数据
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
fun(xmlhttp.responseText);//这里返回的text需要转化成json格式 JSON.parse(xmlhttp.responseText)
}else{
errfun();
}
}
//判断接口类型:GET/POST
if(httpType == 'GET'){
xmlhttp.open("GET",Url,async);
xmlhttp.send(null);
}else if(httpType == 'POST'){
xmlhttp.open("POST",url,async);
xmlhttp,setRequerstHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(requerstData);
}
}
封装接口调用
var params = {
Url: 'www.xxxxx.xxxxx',
type: 'GET'
}
ajax(params,function(res){
console.log('请求成功');
},function(res){
console.log("请求失败");
})