原生js仿jq形式的ajax代码

ajax({
		        url: "http://m.mixblu.com/serv/api/mall/product.ashx",//请求地址
		        type: "post",                       //请求方式
		        data: {
		        	action: "list",
		        	pageindex: 1,
		        	pagesize:10
		        },//请求参数
		        dataType: "json",//数据格式
		        success: function (res, xml) {
		            // 此处放成功后执行的代码
		            console.log(res)
		            console.log(xml)
		        },
		        fail: function (status) {
		            console.log(res)
		            // 此处放失败后执行的代码
		        }
		    });
		    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]));
		            console.log(arr);
		        }
		        // arr.push(("v=" + Math.random()).replace("."));
		        console.log(arr.join("&"));
		        return arr.join("&");
		    }

  

posted @ 2016-07-18 07:51  PanS0911  阅读(69)  评论(0)    收藏  举报