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年,是一种文本脚本语言,成都装修公司是一种动态的.弱类型的.基 ...
随机推荐
- Codeforces 204A Little Elephant and Interval
http://codeforces.com/problemset/problem/204/A 题意:给定一个[L,R]区间,求这个区间里面首位和末尾相同的数字有多少个 思路:考虑这个问题满足区间加减, ...
- QEventLoop 的使用两例
熟悉的陌生人 Qt 是事件驱动的,所以当你用Qt的时候,几乎时时刻刻和 QEventLoop 打交道.,只是你可能没有意识到: QCoreApplicaton::exec() QApplication ...
- BZOJ1680: [Usaco2005 Mar]Yogurt factory
1680: [Usaco2005 Mar]Yogurt factory Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 106 Solved: 74[Su ...
- Linux企业级项目实践之网络爬虫(16)——使用base64传输二进制数据
用http传输二进制的数据时,需要将二进制做一下转化,例如传输的int类型,将int类型之间转为char以后,丢失掉了长度的信息,如数字123456,本来只有4个字节,但是转化成文本的"12 ...
- bzoj4005[JLOI2015]骗我呢
http://www.lydsy.com/JudgeOnline/problem.php?id=4005 神题~远距离orz 膜拜PoPoQQQ大神 #include<cstdio> #i ...
- SIP学习之网络链接
风清扬的CSDN博客 文章分类SIP http://blog.csdn.net/ppy521/article/category/1227390
- c语言typedef运用之结构体
#include <stdio.h> #include <stdlib.h> typedef struct stu { ]; int score; }stu_info; int ...
- poj 2049 Let it Bead(polya模板)
Description Cannery Row percent of the target audience insists that the bracelets be unique. (Just ...
- 56个PHP开发常用代码
2016/02/14 6203 4 在编写代码的时候有个神奇的工具总是好的!下面这里收集了 50+ PHP 代码片段,可以帮助你开发 PHP 项目. 这些 PHP 片段对于 PHP 初学者也非常 ...
- [AngularJS] Transforming raw JSON data to meaningful output in AngularJS
angular.module('APP', []) .controller('MainController', function($scope, UserConstants){ var user = ...