javascript-ajax学习
/**
* @todo 封装Ajax 传输类
* @param params:参数
* @example 用法: var mAjaxer = new Ajaxer(parames);mAjaxer.send();
*/
(function (window,undefined) {
var defined = {},
rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g;
defined.trim = function( text )
{
return (text || "").replace( rtrim, "" );
};
defined.parseJSON = function(data,error)
{
if ( typeof data !== "string" || !data )
return null;
data = this.trim(data);
// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
.replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
// Try to use the native JSON parser first
return window.JSON && window.JSON.parse ?
window.JSON.parse( data ) :
(new Function("return " + data))();
}
else
error("Invalid JSON: " + data);
};
defined.json2String = function(jsonData) {
var strArr = [];
for(var k in jsonData) {
strArr.push(k + "=" + jsonData[k]);
}
return strArr.join("&");
}
var Ajaxer = function(params)
{
var _p = {},
xmlHttp;
if (typeof params == 'undefined')
{
return false;
}
// 发送请求
this.send = function ()
{
xmlHttp = null;
xmlHttp = _p.createXMLHttp();
if(xmlHttp == null)
{
error = {'code' : 404,"message" : "您的浏览器版本过低,无法创建异步对象,请升级您的浏览器!"}
params.error(error);
}
else
{
//打开ajax请求
xmlHttp.open(params.method,params.url,params.async);
//一般jquery会传递这个参数,进行区分ajax请求
xmlHttp.setRequestHeader("X-Requested-With","XMLHttpRequest");
//如果是post的话,要对url进行encode
if (params.method.toLowerCase() == 'post')
{
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
if (typeof params.data != 'string')
params.data = defined.json2String(params.data);
//对post或get发送数据
xmlHttp.send(params.data);
}
else
{
xmlHttp.send(null);
}
//处理状态
xmlHttp.onreadystatechange = _p.SendBack;
}
};
//处理回调函数
_p.SendBack = function ()
{
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200)
{
var data,
ct = xmlHttp.getResponseHeader("content-type") || "";
data = xmlHttp.response;
//判断是否是json
if (params.dataType === "json" || !params.dataType && ct.indexOf("json") >= 0)
{
data = defined.parseJSON(data,params.error);
}
params.success(data);
}
else
{
var error = {'code' : xmlHttp.status,"message" : xmlHttp.statusText};
params.error(error);
}
if (params.async)
{
xmlHttp = null;
}
}
};
//创建ajax对象
_p.createXMLHttp = function()
{
var xmlhttp = null;
// 针对不同浏览器建立这个对象的不同方式写不同代码
if(window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
//针对某些特定版本的Mozillar浏览器的BUG进行修正
if(xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
var activexName = ['MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
for (var i=0; i<activexName.length; i++) {
try {
xmlhttp = new ActiveXObject(activexName[i]);
break;
} catch(e) {}
}
}
return xmlhttp;
}
}
window.Ajaxer = Ajaxer;
window.defined = defined;
})(window);用惯了jquery原生的忘了差不多,补一下.
javascript-ajax学习的更多相关文章
- javascript Ajax 学习
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! AJAX是asynchronousjavascript and XML的简写,就是异步的javascrip ...
- Ajax学习心得
Ajax学习心得 大致学了下Ajax,才知道它不是某种编程语言,而是一种在无需加载整个页面的情况下能够更新部分网页的技术.了解了它的功能后觉得这真是一种好的技术,这得给前端和运维省多少力啊! 传统的网 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- 大量Javascript/JQuery学习教程电子书合集
[推荐分享]大量Javascript/JQuery学习教程电子书合集,送给有需要的人 不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小 15天学会jQuery(完整版).pd ...
- [推荐分享]大量Javascript/JQuery学习教程电子书合集,送给有需要的人
不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小 15天学会jQuery(完整版).pdf 274.79 KB 21天学通JavaScript(第2版)-顾宁燕扫描版.pdf ...
- AJAX学习前奏----JS基础加强
AJAX学习前奏----JS基础加强 知识概要: 1.js类&属性&方法的定义 2.静态属性与方法 3.构造方法 4.原型的使用 5.Object对象直接加属性和方法 6.JSO ...
- JavaScript紧凑学习
JavaScript紧凑学习 windows本地,调用命令行: win键+R 键入cmd , (cmd是Command 命令行 简称) 目录是C盘下的 C:\Users\Administrator&g ...
- AJAX学习2
作者声明:本博客中所写的文章,都是博主自学过程的笔记,参考了很多的学习资料,学习资料和笔记会注明出处,所有的内容都以交流学习为主.有不正确的地方,欢迎批评指正. 本文学习内容:https://www. ...
- [学习笔记]AJAX学习
AJAX学习 ——在w3cschool学习AJAX的学习笔记 参考网站:w3cschool XMLHttpRequest 是 AJAX 的基础. XMLHttpRequest 对象 所有现代浏览器均支 ...
- javascript立体学习指南
javascript立体学习指南第一章:首先了解javascript 首先,什么是javascript? JavaStrip出生于1995年,是一种文本脚本语言,成都装修公司是一种动态的.弱类型的.基 ...
随机推荐
- mobile js
5个jQuery的备选轻量级移动客户端开发(Mobile development)类库 http://www.gbin1.com/technology/jquerymobile/20120423mob ...
- 自制单片机之一------AT89S51最小系统制做
C51最小系统电路在网上一搜一大把,大同小异.我略做改动后如图: 加一个11.0592MHZ的晶振是为了以后做串口通信时和PC有相同的波特率.可用短路帽切换.说说板子的布局:网上卖的最小系统都是把板子 ...
- javascript 中ASCII字符值转换
char-->ascii var a = "123"; a.charAt(1).charCodeAt();ascii-->char String.fro ...
- [poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]
题意 有n个数的序列, 下标为[1.. N ], 限制条件为: 下标从 si 到 si+ni 的项求和 < 或 > ki. 一共有m个限制条件. 问是否存在满足条件的序列. 思路 转化为差 ...
- SQL SERVER 系统存储过程
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...
- Ugly Number II 解答
Question Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime ...
- Activity小结
Log日志类的五种级别 1.由高到低分别是:v.i.d.w.e 2.生命周期有七种状态: onCreate:创建 onStart:启动 onResume:显示(可以与用户交互) onPause:暂停 ...
- 基于PCA和SVM的人脸识别系统-error修改
------------------------------------------------- Undefined function or variable 'W'. Error in class ...
- VC++ 坐标问题总结,控件大小随窗口变化
[出处:blog.csdn.net/lanmanck] 一般变控件位置和大小在OnSize()消息中处理,不外乎几个函数: GetClientRect(),GetClientRect(),Screen ...
- Android开源代码解读のOnScrollListener实现ListView滚屏时不加载数据
使用ListView过程中,如果滚动加载数据的操作比较费时,很容易在滚屏时出现屏幕卡住的现象,一个解决的办法就是不要在滚动时加载数据,而是等到滚动停止后再进行数据的加载.这同样要实现OnScrollL ...