您的位置:首页 > 其它

定义一个公共方法,打造自己的AJAX框架

2014-08-08 23:38 316 查看
var $ =function(){}

$.createXHR = function(){

if (typeof XMLHttpRequest != "undefined"){

return new XMLHttpRequest();

} else if (typeof ActiveXObject != "undefined"){

if (typeof arguments.callee.activeXString != "string"){

var versions = [ "MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0",

"MSXML2.XMLHttp"],

i, len;

for (i=0,len=versions.length; i < len; i++){

try {

new ActiveXObject(versions[i]);

arguments.callee.activeXString = versions[i];

break;

} catch (ex){

//跳过

}

}

}

return new ActiveXObject(arguments.callee.activeXString);

} else {

throw new Error("No XHR object available.");

}

}

// 封装AJAX

// options, 定义:

// success的方法 :

$.ajax = function(options){

// http

// XmlHttpRequest

var xhr = $.createXHR();

xhr.onreadystatechange = function(){

//数据接收完成

// console.log(xhr.readyState);

// 如果 ,接收成功

if(xhr.readyState == 4){

// 要判断 是不是 200 的值 ,状态码,只有为200的时候 ,才可以去解析

// 返回的是正确的数据

if(xhr.status==200){

// 返回文本

var text = xhr.responseText;

// eval 方法 , JS的解析器

eval("var jsonObj = " + text);

// 执行定义的函数

options.success(jsonObj);

}

}

};

// var sendData = "timestamp="+(+new Date) + "&name=1111&age=22&sex=1";

var sendData = "timestamp="+(+new Date) ;

if(options.data){

for(var propertyName in options.data){

sendData = sendData + "&" +propertyName + "=" + options.data[propertyName];

}

}

// console.log(sendData);

var url = options.url;

if(options.method=="get"){

url = url + "?" + sendData;

}

// 准备数据 , 发送ajax

xhr.open(options.method,url);

// xhr.open("get","user.xml");

if(options.method == "post"){

xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

}

// 1

// localhost:8080/hospitalpro/addServlet?name=1111&age=22&sex=1

if(options.method == "post"){

// 真正的发送

xhr.send(sendData);

}

if(options.method == "get"){

xhr.send(null);

}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐