定义一个公共方法,打造自己的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);
}
};
$.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);
}
};
相关文章推荐
- 如何将自己的实体类封装到一个list中,定义自己一系列的方法
- 使用hadoop命令rcc生成Record 一个简单的方法来实现自己的定义writable对象
- java中自己定义一个类,类中必须有一个自己定义的构造方法,否则编译系统识别不了
- 自己定义一个Dialog样式的Activity窗体,切换到Dialog的方法
- 10_9_1编写代码,定义一个基类MyClass,其中包括虚礼方法GetString(),这个方法返回存储在受保护字段myString中的字符串,该字段可以通过只写公共属性ContainedStrin
- 简单编程(十四)定义一个方法能够判断并返回两个整数的最大值,并调用自己的方法测试是否正确。
- 用类名做方法的返回值类型 在学习Java的初始阶段,很多同学使用基本数据类型定义变量和引用类型定义变量以及使用类名做方法的返回值类型常常不知所以。今天我以自己的解读方式和个人的理解作一个简单的解释,和
- 三种定义JavaScript函数方法以及使用匿名函数打造自己的类库
- 定义一个学生类,有六个属性,一个打招呼的方法,一个计算自己总分数和平均分的方法
- 一个自己写的真正判断文件格式,文件大小,而并不仅仅从扩展名来进行判断的上传方法,进一步加强防止软件或恶意的木马图片上传
- 用PHP程序为自己网站打造一个搜索引擎
- 一个自己写的真正判断文件格式,文件大小,而并不仅仅从扩展名来进行判断的上传方法,进一步加强防止软件或恶意的木马图片上传
- 一个树控件类的实现---打造自己的树控件
- 泛型(定义一个类,实例化,查找,排序(用的是委托方法,findall))
- Template Method 在一个方法中实现一个算法,但是推迟定义算法中的某些步骤,从而使其他的类可以重新定义这些步骤
- 自己写的一个用栈方法来计算的数学表达式
- 自己写了一个用c#判断文件名是否有效的方法
- 用PHP程序为自己网站打造一个搜索引擎
- 自己编的一个精致的Ajax框架
- 在javaScrip中定义一个方法