您的位置:首页 > Web前端

原生 ajax 封装

2017-02-10 09:42 393 查看
//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_pag
4000
e = 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("&");

    }
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 前端 ajax js