`
达达乐队
  • 浏览: 3802 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Ajax基石之一:XMLHttpRequest -> XMLHttpRequest经典例子(代码来自于Ajax in Action)

阅读更多
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- XML异步加载数据完整的生命周期例子代码 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>XML异步加载数据完整的生命周期例子代码</title>
</head>
<script>
var req = null;
var console = null;
var READY_STATE_UNINITIALIZED = 0;
var READY_STATE_LOADING = 1;
var READY_STATE_LOADED = 2;
var READY_STATE_INTERACTIVE = 3;
var READY_STATE_COMPLETE = 4;

function sendRequest(url, param, HttpMethod) {
	if (!HttpMethod) {
		HttpMethod = "GET";
	}
	req = initXMLHTTPRequest();
	if (req) {
		req.onreadystatechagnge = onReadyState;
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req.send(param);
	}
}
function initXMLHTTPRequest() {
	var xRequest = null;
	if (window.XMLHttpRequset) {
		xRequest = new XMLHttpRequest();	//Mozilla/Safari
	} else if (typeof ActiveXObject != "undefined") {
		xRequest = new ActiveXObject("Microsoft.XMLHTTP");	//IE
	}
	return xRequest;
}
function onReadyState() {	//定义回调函数
	var ready = req.readyState;
	var data = null;
	if (ready == READY_STATE_COMPLETE) {	//检查readyState
		data = req.responseText;	//读取相应数据
	} else {
		data = "loading ... [" + ready + "]";
	}
	toConsole(data);
}
function toConsole(data) {
	if (console != null) {
		var newline = document.createElement("div");
		console.appendChild(newline);
		var txt = document.createTextNode(data);
		newline.appendChild(txt);
	}
}
window.onload  = function () {
	console = document.getElementById('console');
	sendRequest("data.txt");

}
</script>
<body>

</body>
</html>

同的浏览器,执行结果不太一样:
IE:
loading ... [1]
loading ... [1]
loading ... [3]
Here is some text from the server!
Firefox 1.0
loading ... [1]
loading ... [1]
loading ... [2]
loading ... [3]

代码中可以看出XML技术异步加载数据的方式:
通过XMLHttpRequest向服务器发送一个请求,这个请求是由浏览器额外开一个Http异步请求线程来处理。同时定义了一个回调函数,这个函数相当于一个事件触发的函数,函数触发的条件就是web服务器对这个请求返回一个response。浏览器发送XMLHttpRequest的线程监听到了这个response,会将这个请求放到JavaScript引擎线程队列的最后,等待JavaScript引擎线程的执行,JavaScript引擎始终是单线程执行的。
分享到:
评论

相关推荐

    ajax in action

    ### Ajax在行动:一种全新的Web设计方法 #### 引言:异步网络交互与Web应用的革新 在探讨Ajax(异步JavaScript+XML)之前,我们先回顾一下Web设计的历史。传统的Web应用依赖于服务器与客户端之间的同步通信,这...

    struts2+jquery+json+ajax的使用

    Ajax的核心是利用JavaScript创建XMLHttpRequest对象,通过它向服务器发送请求并接收响应,而无需刷新整个页面。这使得用户界面更加流畅,提升了用户体验。 在"ProductSystem"项目中,用户可能有一个产品列表展示...

    javaweb,struts,spring,ibatis,hibernate,ajax等API及帮助文档

    在IT行业中,Web开发是至关重要的领域,而Java Web技术栈是其中的主流之一。本压缩包提供的资源涵盖了几个核心的Java Web框架和技术,包括Struts、Spring、iBatis、Hibernate以及Ajax,这些都是构建高效、动态Web...

    零基础学Java[1].Web开发:JSP.Servlet.Struts.Spring.Hibernate.Ajax

    Struts通过Action类、配置文件(struts-config.xml)和一系列拦截器实现对请求的处理,降低了代码耦合度,提高了可维护性。 4. **Spring**: Spring框架是Java企业级应用的基石,它提供了全面的DI(Dependency ...

    框架整合struts hibernat spring ajax eclipse

    Struts、Hibernate、Spring、Ajax 和 Eclipse 是Java开发中常用的技术框架和工具,它们在构建企业级Web应用程序中起着至关重要的作用。 首先,Struts 是一个基于MVC(Model-View-Controller)设计模式的Java Web...

    Java软件开发修炼过程

    在整个修炼过程中,还需要关注设计模式、算法、数据结构、JDK源码阅读和理解,以及UML(统一建模语言)的学习,这些都将有助于提升代码质量和项目管理能力。同时,扎实的数据库知识和熟悉主流的开发框架是Java软件...

    0Java.Web开发(上):JSP.Servlet.Struts.Spring.Hibernate.Ajaxdianzijiaocheng

    在Java.Web开发领域,JSP(JavaServer Pages)、Servlet、Struts、Spring、Hibernate和Ajax是不可或缺的重要技术,它们构成了Web应用开发的基石。这篇教程旨在帮助初学者和有一定经验的开发者更好地理解和掌握这些...

    w3cSchoolweb

    这个名为“w3cSchoolweb_jquery_js_ajax chm API”的压缩包显然专注于JavaScript的三个关键方面:jQuery、JavaScript和Ajax,这些都是现代Web开发的核心技术。 1. **jQuery**: jQuery是一个高效、简洁的...

    JSP应用开发详解(第三版)ch22-28

    它会介绍XMLHttpRequest对象的使用,以及如何利用jQuery等库简化AJAX调用。此外,还会讨论JSON(JavaScript Object Notation)作为数据交换格式在AJAX中的应用。 第23章:JSP自定义标签库 本章深入探讨JSP自定义...

    Java学习书籍

    手册将介绍Ajax的基本原理、XMLHttpRequest对象的使用、JSON数据格式的处理,以及如何与服务器进行异步交互。 2. **Hibernate培训**:Hibernate是一个优秀的对象关系映射(ORM)框架,它简化了Java应用对数据库的...

    帮助文档全集系列教程

    "帮助文档全集系列教程"是一个集合了多种关键技术的学习资源,涵盖了从前端到后端的重要框架和库,包括CSS、Ajax、JavaScript(JS)、jQuery、Struts、Spring以及Hibernate。这些技术在构建高效、响应式和动态的Web...

    java企业级应用开发

    Java企业级应用开发是构建大型、可扩展且高效软件系统的基石,主要集中在Java Web开发技术上。本课程涵盖了从环境搭建到实现复杂业务逻辑的全过程,旨在培养开发者在实际项目中的综合技能。 首先,第1章“Java企业...

    2020mt93602-login

    10. **AJAX异步提交**:使用JavaScript的XMLHttpRequest或Fetch API,可以实现异步登录,无需刷新整个页面即可验证用户凭据。 综上所述,创建一个HTML登录界面涉及多个方面,包括基本的HTML结构、表单元素、用户...

    shop_secondskill

    在"shop_secondskill"项目中,可能会涉及到AJAX(Asynchronous JavaScript and XML),这是一种创建动态网页的技术,允许在不刷新整个页面的情况下从服务器获取数据。这通常通过`XMLHttpRequest`对象或更现代的`...

Global site tag (gtag.js) - Google Analytics