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年,是一种文本脚本语言,成都装修公司是一种动态的.弱类型的.基 ...
随机推荐
- CM源码同步编译教程
一.操作系统 准备一个ubuntu安装镜像,我用的是12.10. 安装系统时请安装到30g以上的盘,最好就50g以上啦 安装教程不多说,网上很多教程,这里我推荐用自带的wubi工具安装,比较方便 用虚 ...
- Ubuntu12.04 下修改Apache端口号
1:$sudo vim /etc/apache2/ports.conf NameVirtualHost *:80Listen 8090 #将此行的80修改成8090 2:sudo vim /etc/a ...
- directive 指令
参考文章 : http://www.zouyesheng.com/angular.html#toc20 18. 自定义指令directive http://blog.jobbole.com/62 ...
- SmartBusinessDevFramework架构设计-2:结构图示
架构设计一览图 下图表示了本架构的设计草稿. 接下来 ,我们将逐步细述,各个模块之间的松散耦合关系. 核心的实现原理.敬请关注.
- 打开首页老是加载themes.googleusercontent.com_Wopus问答
打开首页老是加载themes.googleusercontent.com_Wopus问答 打开首页老是加载themes.googleusercontent.com
- MyBatis映射文件的resultMap如何做表关联
MyBatis的核心是其映射文件,SqlMap文件,里面配置了项目中用到了什么SQL语句,和数据库相关的逻辑都在这个映射文件里.顾名思义,映射文件就是对Java对象和SQL的映射.这里简单介绍一下映射 ...
- 一个session已经ACTIVE20多小时,等待事件SQL*Net more data from client
问题描述: 一个session已经ACTIVE20多小时,等待事件SQL*Net more data from client 有一人session,从昨天上午11点多登陆(v$session.logi ...
- 使用kthread内核线程的内核模块
这里使用了msleep(50); printk 开启其实挺大的,当我使用msleep(10);机器直接卡死了: 另外ISERR不能判断结构体的,只能判断 空指针 #cat hello.c #inclu ...
- 应用Observer接口实践Observer模式
原文:http://zhangjunhd.blog.51cto.com/113473/68949/ 在Java中通过Observable类和Observer接口实现了观察者模式.Observer对象是 ...
- C# 二分查询
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...