`

Ajax入门

    博客分类:
  • RIA
阅读更多
第一个测试程序:
<html>
	<title>完整的使用XMLHttpRequest加载文档的例子</title>
	<head>
		
		<script type='text/javascript'>
		
			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,_params,_httpMethod){
				_httpMethod = _httpMethod || 'GET';
				
				req = initXMLHTTPRequest();
				if(req){
					req.onreadystatechange = onReadyState;
					req.open(_httpMethod,_url,true);
					req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
					req.send(_params);
				}
			}
			
			function initXMLHTTPRequest(){
				if (window.XMLHttpRequest) {
		        return new XMLHttpRequest();
		    } else if (window.ActiveXObject) {
		        return new ActiveXObject("Microsoft.XMLHTTP");
		    }
		    return null;
			}
			
			function onReadyState(){
			  var ready=req.readyState;
			  var data=null;
			  if (ready==READY_STATE_COMPLETE){
			    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>
		
	</head>
	<body>
		<div id='console'></div>
	</body>
</html>




学会重构:
/*
 *url-loading object and a request queue built on top of it
 */

/* namespacing object */
var Darkness = new Object();

Darkness.READY_STATE_UNINITIALIZED=0;
Darkness.READY_STATE_LOADING=1;
Darkness.READY_STATE_LOADED=2;
Darkness.READY_STATE_INTERACTIVE=3;
Darkness.READY_STATE_COMPLETE=4;


/*--- content loader object for cross-browser requests ---*/
Darkness.ContentLoader = function(url,onload,onerror,method,params,contentType){
  //this.url = url;
  this.req=null;
  this.onload = onload;
  this.onerror=(onerror) ? onerror : this.defaultError;
  this.loadXMLDoc(url,method,params,contentType);
}

Darkness.ContentLoader.prototype = {
	initXMLHTTPRequest:function(){
		if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
	},
	onReadyState: function(){
	  var req = this.req;
	  var ready = req.readyState;
	  
	  if (ready == Darkness.READY_STATE_COMPLETE){
	  	var httpStatus = req.status;
	    if (httpStatus==200 || httpStatus==0){
	      this.onload.call(this);
	    }else{
	      this.onerror.call(this);
	    }
	  }
	},
	loadXMLDoc: function(url,method,params,contentType){
	  method = method ||"GET";
	  
	  if (!contentType && method=="POST"){
	    contentType='application/x-www-form-urlencoded';
	  }
	  this.req = this.initXMLHTTPRequest();
	  if (this.req){
	    try{
	      var loader = this;
	      this.req.onreadystatechange = function(){
	        loader.onReadyState.call(loader);
	      }
	      this.req.open(method,url,true);
	      if (contentType){
	        this.req.setRequestHeader('Content-Type', contentType);
	      }
	      this.req.send(params);
	    }catch (err){
	      this.onerror.call(this);
	    }
	  }
	},
	defaultError:function(){
	  alert("error fetching data!"
	    +"\n\nreadyState:"+this.req.readyState
	    +"\nstatus: "+this.req.status
	    +"\nheaders: "+this.req.getAllResponseHeaders());
	}
}


接着来看一下重构后页面中的代码,优点自己领悟哦:
<html>
	<title>完整的使用XMLHttpRequest加载文档的例子-Refactor</title>
	<head>
		<script src="ContentLoader.js" type="text/javascript"></script>
		<script type='text/javascript'>	
			var console=null;
			
			function toConsole(){
				var data = this.req.responseText;
			  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');
			  // 仅使用这一行代码,传入请求的url及回调函数,
			  // 就可完成一个简单的Ajax操作,重构真的可以带来很多好处哦
			  new Darkness.ContentLoader('data.txt',toConsole);
			}
		</script>
		
	</head>
	<body>
		<div id='console'></div>
	</body>
</html>


分享到:
评论

相关推荐

    Ajax入门例子项目

    在这个"Ajax入门例子项目"中,我们将深入探讨Ajax的基础概念、工作原理以及如何创建简单的Ajax应用。 1. Ajax基础概念: - 异步:Ajax的主要特性是异步通信,意味着用户在请求发送后可以继续浏览网页,而无需等待...

    《ajax入门经典》源代码

    **Ajax入门经典源代码概述** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这种技术的核心在于利用JavaScript与服务器进行异步数据交互,结合XML或其他...

    AJAX入门

    ### AJAX入门知识点详解 #### 一、引言 AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换来实现这一点,从而为用户...

    ASP.NET 2.0 AJAX入门经典实例,有很好的参考价值,XML-Script

    《ASP.NET 2.0 AJAX入门经典》这本书很可能包含了多个示例,演示如何使用AJAX技术来增强ASP.NET 2.0应用程序的交互性。这些实例可能涵盖用户界面改进、数据异步加载、实时验证等多个场景,帮助读者掌握实际开发技巧...

    ASP.NET_AJAX入门系列

    ASP.NET_AJAX入门系列:概述.doc ASP.NET_AJAX_在Web开发中的应用.doc ASP.NET_AJAX入门系列:Timer控件简单使用.doc ASP.NET_AJAX入门系列:UpdateProgress控件简单介绍.doc ASP.NET_AJAX入门系列:使用...

    Ajax入门,java Ajax入门

    **Ajax入门:无刷新技术与JavaScript中的Ajax** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器交换数据并局部更新页面,使得用户...

    ASP.NET AJAX入门系列教程

     ASP.NET AJAX是一个完整的开发框架,其服务器端编程模型相对于客户端编程模型较为简单,而且容易与现有的ASP.NET程序相结合,通常实现复杂的功能只需要在页面中拖几个控件,而不必了解深层次的工作原理,除此之外...

    Ajax入门教程(通过例子讲解)

    Ajax,即Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。Ajax允许网页与服务器之间进行交互,实现数据的动态加载,提高了用户体验。 在...

    ajax入门教程PDF

    **Ajax(Asynchronous JavaScript and XML)**是一种在无需重新加载整个...通过阅读这份"ajax入门教程PDF",初学者将能够快速理解Ajax的工作方式,掌握基本的Ajax编程技能,从而在实际项目中提升网页的交互性和动态性。

    AJAX入门实例-简单易懂

    总的来说,这个"AJAX入门实例"旨在帮助初学者理解AJAX的基本概念和工作流程,以及如何在ASP.NET环境中实现它。通过学习这个实例,你可以掌握创建异步Web应用的基本技巧,提高用户体验,并为后续更复杂的AJAX应用场景...

    ajax chm ajax入门 ajax教程

    **Ajax入门**通常涉及以下几个关键概念: 1. **XMLHttpRequest对象**:它是Ajax的核心,用于在后台与服务器进行通信。创建XMLHttpRequest对象后,可以通过它的open()方法设置请求类型(GET或POST)、URL以及是否异步...

    Ajax 入门经典 (Ajax 核心 技术)

    **Ajax 入门经典——掌握Ajax核心技术** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,极大地...

    Ajax程序经典小例子,《Ajax入门教程》代码

    在《Ajax入门教程》中,可能包含了一系列经典的小例子,比如: 1. **实时搜索建议**:用户在输入框中输入字符时,利用Ajax动态向服务器发送请求,获取匹配的搜索建议,并即时显示在下拉框中。 2. **无刷新分页**:...

    ajax读取页面内容【简单的ajax入门实例】

    通过这个简单的Ajax入门实例,你可以理解如何利用Ajax实现页面内容的异步加载。随着经验的增长,还可以学习更高级的技巧,如使用jQuery的$.ajax()函数、Promise或现代的fetch API,以及错误处理和进度回调等。

    Ajax入门视频教程

    **Ajax入门视频教程** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它的核心在于JavaScript,通过XMLHttpRequest对象与服务器进行异步数据交互,从而实现...

    前端技术ajax入门

    ### 前端技术AJAX入门精讲 #### 一、AJAX概述 **AJAX**(Asynchronous JavaScript and XML,异步JavaScript和XML)是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实现...

    ajax入门视频教程

    **Ajax入门视频教程详解** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这种技术使得Web应用程序能够更快、更高效地运行,提升了用户体验,因为它允许...

    ajax入门是初学者的宝典

    ajax入门 ajax入门 ajax入门是初学者的宝典 ajax入门 ajax入门 ajax入门是初学者的宝典 ajax入门 ajax入门 ajax入门是初学者的宝典 ajax入门 ajax入门 ajax入门是初学者的宝典

    ajax入门书籍 ajax入门到精通

    ajax入门书籍 ajax入门到精通 好用又源码

Global site tag (gtag.js) - Google Analytics