原生 ajax 封装

来源:互联网 发布:手机淘宝店铺怎么登录 编辑:程序博客网 时间:2024/04/30 20:39
//http://192.168.*.**:8080/hohjkhklhkhkhjkl/ActivityLogInterface/setlog_activity?activityId=XXXX&userId=XXX&prePage=xxx&nextPage=xxx&userIp=xxxx&from_pid=xxxx


var logAjaxActionUrl = "http://**********:8080/xjcartoon_activity_BtopInterface/";
//ajax 请求
//同步,异步请求
   /**
*url :请求接口地址
*xhr:对象
*Async:是否是异步请求(true:异步;false:同步)
*method:请求方式(POST或GET)
*params:请求传送的参数
*Content-Type:请求头格式要求
*data:请求获取到的信息
*
*
***调用方法:ajax.init({
url:"http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card",
method:"get",
params:{"format":"json","ip":"192.168.1.255"},
async:true,
ContentType:"application/x-www-form-urlencoded",
success:function(data){
aa.innerHTML=data;
},
fail:function(status){

}
});
*/
 
function AjaxFun(option){
this.option=null;
this.url=null;//请求地址
this.Async=null;//是否异步请求;
this.method=null;//请求方式
this.formatParams=function(data){//对传参进行编码
    var arr=[];
for(var name in data){
arr.push(encodeURIComponent(name)+"="+encodeURIComponent(data[name]));
}
// arr.push(("v="+Math.random()).replace(".",""));
return arr.join("&");
}
this.params=null;
this.contentType=null;
this.data=null;//请求获取到的信息
    this.init=function(option){//初始化
this.option=option||{};
this.url=this.option.url;//请求地址
this.Async=this.option.async||true;//是否异步请求;
this.method=this.option.method.toUpperCase();//请求方式
this.params=this.formatParams(this.option.params);
this.contentType=this.option.ContentType||"";
this.data=null;//请求获取到的信息


//创建对象
//console.log(this.formatParams)
   var xhr;
if (window.XMLHttpRequest)
 {// code for IE7+, Firefox, Chrome, Opera, Safari
xhr=new XMLHttpRequest();
 }
else
 {// code for IE6, IE5
    xhr=new ActiveXObject("Microsoft.XMLHTTP");
 }

//接收请求
xhr.onreadystatechange=function(){
if(xhr.readyState == 4 ){
if(xhr.status == 200){
 option.success && option.success(eval("("+xhr.responseText+")"));
                } else {
                    option.fail && option.fail(status);
//window.location.href="404.html";
                }
}
}


 //判断请求方式
if(this.method=="POST"){
xhr.open(this.method,this.url,this.Async);
//设置提交时的内容类型
if(this.contentType==""){
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
}else{
 xhr.setRequestHeader("Content-type",this.contentType);
}
xhr.send(this.params);
}else if(this.method=="GET"){
xhr.open(this.method,this.url+"?"+this.params,this.Async);
xhr.send(null);
}











};

}
var ajax=new AjaxFun();
function setCookie(name,value)
{
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+  value + ";expires=" + exp.toGMTString();
}
function getCookie(name) {
var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
if (arr = document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}








/**
 * 
 * @param {Object} userId  用户信息
 * @param {Object} from_pid 来源
 * @param {Object} next_id 请求详情Id
 */
  function setLogInfo(userId,activityId,from_pid,next_id){
  var params = new Object();
//暂时设定一个定值的userid和user_ip
params.userId = userId;
   //params.user_ip = "8851003273568946";
   params.from_pid = from_pid;
   //上一个页面
   params.prev_page = document.referrer || '';
   //当前页面地址
   params.next_page = document.URL || '';
   params.next_id = next_id;
   //拼接参数串
   var args = ''; 
   for(var i in params) {
       if(args != '') {
           args += '&';
       }   
       args += i + '=' + encodeURIComponent(params[i]);
   }
var img=new Image(1,1);
img.src = logAjaxActionUrl+'ActivityLogInterface/setlog_activity?loggerType=page&' + args;
  }






//activityId=XXXX&userId=XXX&prePage=xxx&nextPage=xxx&userIp=xxxx&from_pid=xxxx










/*
    function ajax(options) {
        options = options || {};
        options.type = (options.type || "GET").toUpperCase();
        options.dataType = options.dataType || "json";
        var params = formatParams(options.data);


        //创建 - 非IE6 - 第一步
        if (window.XMLHttpRequest) {
            var xhr = new XMLHttpRequest();
        } else { //IE6及其以下版本浏览器
            var xhr = new ActiveXObject('Microsoft.XMLHTTP');
        }


        //接收 - 第三步
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4) {
                var status = xhr.status;
                if (status >= 200 && status < 300) {
                    options.success && options.success(xhr.responseText, xhr.responseXML);
                } else {
                    options.fail && options.fail(status);
                }
            }
        }


        //连接 和 发送 - 第二步
        if (options.type == "GET") {
            xhr.open("GET", options.url + "?" + params, true);
            xhr.send(null);
        } else if (options.type == "POST") {
            xhr.open("POST", options.url, true);
            //设置表单提交时的内容类型
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xhr.send(params);
        }
    }
    //格式化参数
    function formatParams(data) {
        var arr = [];
        for (var name in data) {
            arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name]));
        }
        arr.push(("v=" + Math.random()).replace(".",""));
        return arr.join("&");
    }
*/
0 0
原创粉丝点击