ajax Class

/************************************************************************
//封装ajax
	首先一个xhr自执行,创建一个xmlhttprequest的对象.这里的对象,兼容IE和W3C
		obj 是一个键值对,
					method 	: get或者post
					async  	: false同步, true异步.(一般都有true)
					success	: function() {}, 成功返回的回调函数, 参数是服务器返回的值
					data 	: 一个键值对,向服务器发送的数据.
例子:
	$sy().ajax({
		method : ‘get‘,
		url : ‘demo.php‘,
		data : {
			‘name‘ : ‘Lee‘,
			‘age‘ : 100
		},
		success : function (text) {
			alert(text);
		},
		async : true
	});

ajax执行顺序是,open,send, 接受数据

	xhr.readyState == 4             4,完成接受到了全部数据,可以执行success
						0,维初始化,没有调用open
						1,启动,调用了open,但为调用send
						2,调用了send,但未接受响应.
						3,接收到部分数据的相应.

	shr.status == 	200 OK,
					400,语法错误导致服务器不识别
					401,请求需要用户认证
					404,指定的url服务器找不到.
					500,服务器的意外错误.

************************************************************************/

Osye.prototype.ajax  = function (obj) {
	var xhr = (function ()
	{
		if (typeof XMLHttpRequest != ‘undefined‘)
		{
			return new XMLHttpRequest();
		}
		else if (typeof ActiveXObject != ‘undefined‘)
		{
			var version = [ ‘MSXML2.XMLHttp.6.0‘,		//这三个是兼容低版本的IE
							‘MSXML2.XMLHttp.3.0‘,
							‘MSXML2.XMLHttp‘];

			for (var i = 0; version.length; i ++)
			{
				try {
					return new ActiveXObject(version[i]);
				} catch (e) {
					//跳过
				}
			}
		}
		else
		{
			throw new Error(‘sorry, your browser is not support ajax, please change other browser. thanks.‘);
		}
	})();

	if (obj.async == undefined) {	//如果没有传入async.默认是异步
		obj.async = true;
	}

	obj.url = obj.url + ‘?rand=‘ + Math.random();	//加一个随机数,保证每次不一样.都可以返回

	obj.data = (function (data) {					//函数自执行,将传输的数据,赋值给url字符串.
		var arr = [];
		for (var i in data) {
			arr.push(encodeURIComponent(i) + ‘=‘ + encodeURIComponent(data[i]));
		}
		return arr.join(‘&‘);					//为键值对之间加入&,保持键值对的可识别性.
	})(obj.data);		

	if (obj.method === ‘get‘){		//将数据,添加到url后面.
		obj.url += obj.url.indexOf(‘?‘) == -1 ? ‘?‘ + obj.data : ‘&‘ + obj.data;
		// alert(obj.data);		//测试键值对
	} 	

	xhr.open(obj.method, obj.url, obj.async);		//发送请求类型,method,方法,url链接,async是否同步.

	if (obj.async === true) {			     //异步事件,onreadystatechange.
		xhr.onreadystatechange = function () {
			if (xhr.readyState == 4) {	     //成功返回.
				callback();
			}
		};
	}

	if (obj.method === ‘post‘) {		 //post方法
		xhr.setRequestHeader(‘Content-Type‘, ‘application/x-www-form-urlencoded‘);
		xhr.send(obj.data);
	}
	else {			          //get,数据已经发出去了.在浏览器的网址输入栏里
		xhr.send(null);
	}

	if (obj.async === false) 	     //同步,就直接会回调
	{
		callback();
	}

	function callback() {
		if (xhr.status == 200) 					//200成功返回.
		{
			obj.success(xhr.responseText);			//回调传递参数
		}
		else
		{
			//获取数据错误,打出错误代号和错误信息.
			alert(‘To get the data error! Error code‘ + xhr.status + ‘,Error message:‘ + xhr.statusText);
		}
	}
}

 

时间: 2024-08-24 01:23:41

ajax Class的相关文章

ajax+分页

<!DOCTYPE html><html><head lang="zh-cn"><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><meta http-equiv="X-UA-Compat

原生ajax

function ajax() { var ajaxData = { type: arguments[0].type || "GET", url: arguments[0].url || "", async: arguments[0].async || "true", data: arguments[0].data || null, dataType: arguments[0].dataType || "text", cont

通过jQuery Ajax使用FormData对象上传文件

转自:http://www.cnblogs.com/labnizejuly/p/5588444.html FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". <form id="uploadForm" enctype="multipart/form-data"> <input id="file" type="file"

ajax的几种格式

<script type="text/javascript"> $.ajax( { url:'地址', cache:'true/false',//请求是否接口是否缓存 type:'GET/POST'//请求方式 data: {"name":"才结束","age":"18"} 'name=蔡金锁&age=18&' ,//发送的数据 字符串 json dataType:'json',

AJAX学习

一.概述 ajax不是一种新的语言,它是异步的javascript和xml.传统的请求式网页在发送请求和页面响应是同步进行的,我们知道,B/S架构中在浏览器中跑的代码是javascript.HTML标签还有CSS样式文件等,我们的请求可以由javascript代码来写,服务器端的请求数据接受可以由xml来做(因为xml的优势就在于数据的传递,xml容易被解析),而ajax就是将传统的这一过程异步化,达到发出请求后不必刷新整个页面也可以得到响应,其实这一思想不仅可以用在B/S架构的程序设计中,在C

jQuery $.ajax传递数组的traditional参数传递必须true

出自:http://blog.csdn.net/ojackhao/article/details/24580437 起初我认为traditional:true,可有可无,但是后来不用traditional的时候,发现后台无法获取selectUsers的值,那么可以肯定的是traditional默认值是false.当提交的参数是数组( {selectUsers:[value,value,value]} ),如果是false的话,则提交时会是"selectUsers[]=value&sele

ajax

01.创建jsp页面 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+r

Js原生Ajax和Jquery的Ajax

一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死 2.Ajax的运行原理 页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到服务器端,在这段时间里,客户端可以任意进行任意操作,直到服务器端将数据返回给Ajax引擎后,会触发你设置的事件,从而执行自定义的js逻辑代码完成某种页面1 功能. 二

JavaScript笔记——使用AJax

在使用过JQuery之后,再来看JavaScript的Ajax实现就会觉得很麻烦,不过,最近使用到了,就记录一下吧 在JavaScript中Ajax的实现可以分为四步: 第一步 得到XMLHttpRequest对象 得到XMLHttpRequest > 大多数浏览器都支持:var xmlHttp = new XMLHttpRequest(); > IE6.0:var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); > IE

ajax学习笔记3-jQuery实现ajax(大拇指向上)

jQuery实现ajax: jQuery本身提供了一个ajax方法,jQuery.ajax([settings]) type:类型,”POST”或”GET”(默认) url:发送请求的地址 data:是一个对象,连同请求发送到服务器的数据 dataType:预期服务器返回的数据类型,如果不指定,jQuery将自动根据HTTP包MIME信息来智能判断,一般采用json格式,可以设置为“json” success:是一个方法,请求成功后的回调函数.传入返回后的数据,以及包含成功代码的字符串. err