`
阅读更多

function getXMLHttpRequest() {
	var xmlhttp;
	if (window.XMLHttpRequest) {
		try {
			xmlhttp = new XMLHttpRequest();
			xmlhttp.overrideMimeType("text/html;charset=UTF-8");//设定以UTF-8编码识别数据
		} catch (e) {}
	} else if (window.ActiveXObject) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHttp");
			} catch (e) {
				try {
					xmlhttp = new ActiveXObject("Msxml3.XMLHttp");
				} catch (e) {}
			}
		}
	}
	return xmlhttp;
} 


function ajax(options){

	options = {
	
		type: options.type || "POST",
		url: options.url || "",
		timeout: options.timeout || 5000,
		onComplete: options.onComplete || function(){},
		onError: options.onError || function(){},
		onSuccess: options.onSuccess || function(){},
		data: options.data || ""
	};

	var xml = getXMLHttpRequest();
	xml.open(options.type,options.url,true);
	
	if('POST' == options.type){
		xml.setRequestHeader(
		"Content-Type", "application/x-www-form-urlencoded");

		if ( xml.overrideMimeType )
			xml.setRequestHeader("Connection", "close");
	}

	var timeoutLength = options.timeout;
	var requestDone = false;

	setTimeout(function(){
		requestDone = true;
	},timeoutLength);

	xml.onreadystatechange = function(){
		if(xml.readyState == 4 && !requestDone){
			if(httpSuccess(xml)){
				options.onSuccess(httpData(xml,options.type));
			}else{
				options.onError();
			}

			options.onComplete();
			xml = null;
		}
	};

	if('POST' == options.type)
		xml.send(serialize(options.data));
	else
		xml.send();

	function httpSuccess(r){
		try{
			return !r.status && location.protocol == "file:" || 
				(r.status >=200 && r.status < 300) ||
				r.status == 304 ||
				navigator.userAgent.indexOf("Safari") >=0 && typeof r.status == "undefined";
		}catch(e){}
		return false;
	}

	function httpData(r,type){
		var ct = r.getResponseHeader("content-type");
		var data = !type && ct && ct.indexOf("xml") >=0;
		data = type == "xml" || data ? r.responseXML : r.responseText;

		if(type == "script")
			eval.call(window,data);
		
		return data;
	}

	function serialize(a) {
		var s = [];
		
		if ( a.constructor == Array ) {
			for ( var i = 0; i < a.length; i++ )
				s.push( a[i].name + "=" + encodeURIComponent( a[i].value ) );
		} else {
			for ( var j in a )
				s.push( j + "=" + encodeURIComponent( a[j] ) );
		}
		return s.join("&");
	}

}




分享到:
评论

相关推荐

    Ajax实现文件下载

    JQuery的ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载。但可以用js生成一个form,用这个form提交参数,并返回“流”类型的...

    Ajax详解

    资源名称:Ajax详解内容简介:《Ajax 详解》电子书 chm格式,是《四天学会Ajax》一书扩展,更加详细的讲述Ajax的方方面面。 内容简要给大家说明一下:Ajax简介、使用Javascript和Ajax发出异步请求、Ajax中的...

    Ajax常规操作:接收Excel文件流

    Ajax常规操作:接收Excel文件流

    jquery.unobtrusive-ajax.rar

    2. **事件处理**:库内部监听`ajaxStart`、`ajaxSend`、`ajaxSuccess`、`ajaxError`等事件,提供了对Ajax请求生命周期的控制。开发者可以通过自定义事件处理器来扩展功能或处理错误。 3. **内容替换**:默认情况下...

    ajax 检测用户名是否被占用

    try { ajax = new ActiveXObject(“Msxml2.XMLHTTP”); } catch (e) { try { ajax = new ActiveXObject(“Microsoft.XMLHTTP”); } catch (E) { ajax = false; } } if (!ajax && typeof XMLHttpRequest!=’...

    chrome扩展插件获取ajax请求记录

    在IT领域,尤其是在Web开发中,Ajax(Asynchronous JavaScript and XML)是一种常用的技术,它使得网页可以在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。这极大地提升了用户体验,因为用户不再...

    ajax笔记ajax笔记ajax笔记

    ajax笔记

    AJAX结课项目:黑马头条-数据管理平台

    AJAX结课项目:黑马头条-数据管理平台

    ajax smarty

    form表单的enctype属性:设置表单的编码类型 1、enctype="application/x-... 说明:代表当前表单只能提交字符信息 2、enctype="multipart/form-data" 说明:代表当前表单不仅能提交字符信息也可以提交字节信息

    Ajax高级程序设计pdf

    **Ajax高级程序设计** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新,提高了用户体验,尤其...

    SpringBoot整合Ajax

    SpringBoot整合Ajax(无坑源码) 亲测有效,最简单实例 Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况...

    C# 如何使用ajax请求

    C# 使用 AJAX 请求的核心在于利用 ASP.NET AJAX 库来实现在客户端与服务器之间的异步通信。AJAX(异步JavaScript和XML)技术允许我们在不刷新整个页面的情况下更新网页的特定部分,提高用户体验。以下是详细步骤和...

    AJAX 实例

    AJAX 实例 为了帮助您理解 AJAX 的工作原理,我们创建了一个小型的 AJAX 应用程序: 实例 使用 AJAX 修改该文本内容 修改内容 AJAX 实例解析 上面的 AJAX 应用程序包含一个 div 和一个按钮。 div 部分用于显示来自...

    致远OA-ajax.do未授权文件上传漏洞1

    近日,致远OA ajaxAction 文件上传漏洞利用代码披露,由于致远OA旧版本中某些接口存在未授权访问,以及部分函数过滤不足,攻击者通过构造恶意请求,可在无

    Ajax在请求过程中显示进度的简单实现

    在进行Ajax调用过程中一般都具有这样的做法:显示一个GIF图片动画表明后台正在工作,同时阻止用户操作本页面(比如Ajax请求通过某个按钮触发,用户不能频繁点击该按钮产生多个并发Ajax请求);调用完成后,图片消失...

    Ajax安全技术

    众所周知,Ajax具备变革互联网的潜力,但危险的新安全威胁同样随之而来。《AJAX安全技术》揭示Ajax框架与生俱来的安全弱点密集区域,为开发人员创造安全应用提供指导。每一章由一个Ajax安全谬误开始,随后即将其揭穿...

    webform AJAX

    WebForm AJAX 是一种在ASP.NET框架中实现异步更新页面的技术,它允许部分网页内容在不重新加载整个页面的情况下进行更新,从而提供更流畅、更快速的用户体验。本DEMO演示了如何在WebForm中应用AJAX技术,下面将详细...

    快速解决ajax请求出错状态码为0的问题

    今天在使用 ajax 向后台请求数据时出现错误,提示状态码为 0 ,后台采用的是 spring mvc 架构。 状态码为0是什么意思呢?查找了下,原来它意味着 (未初始化)即没有调用到send()方法,我原来代码如下 : $.ajax...

    jQuery的ajax发送FormData的方式

    // 2 使用$.ajax发送fd // 需要指定两个属性 // - processData : false // - contentType : false $.ajax({ method : 'POST', url : '/ajax_Day5/datas03.php', data : fd, success : function (data) { ...

    Ajax案列 pdf

    1. Ajax基础概念和用途 - Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,能够更新部分网页的技术。 - Ajax使得Web应用更加动态,能够提升用户体验。 2. Ajax对象的获取方法 -...

Global site tag (gtag.js) - Google Analytics