欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

AJAX 简介以及基础的认识

程序员文章站 2022-05-21 09:22:31
...

AJAX 是什么:

AJAX = 异步 JavaScript 和 XML;
AJAX 是一种在无需加载整个网页的情况下,能够更新部分网页的技术;
AJAX 是一种在2005年由Google 推广开来的变成模式;
AJAX 不是一种新的变成语言,而是一种使用现有新标准的方法,通过AJAX可以创建更好、更快以及
更友好的WEB 应用程序;
AJAX 基于JavaScript 和 HTTP 请求(HTTP request),通过后台与服务器进行少量
数据交换,AJAX可以使用网页实现异步更新,\局部更新;


重要的对象:XMLHttpRequest 对象   ,所有现代浏览器支持的对象:IE7+ Firefox/Chrome/Safari
创建语法:
var xmlhttprequest = new XMLHttpRequest();

IE6 以下版本使用 :ActiveXObject对象;
var xmlhttprequest = new ActiveXObject("Microsoft.XMLHTTP");

提示:当请求被发送到服务器时,我们需要执行一些基于响应的任务。
每当readyState改变时,就会触发onreadystatechange事件。
readyState属性存有XMLHttpRequest的状态信息;


XMLHttpRequest 对象的属性介绍:
onreadystatechange(当准备好的状态发生改变的时候):
存储函数(函数名),每当readyState属性改变时,就会调用函数;

readyState(准备好的状况):
存有XMLHttpRequest 的状态,从0 到4 发生变化,
0:请求未初始化;
1:服务器连接已建立;
2:请求已接收;
3:请求处理完成;
4:请求已完成,且响应已就绪;

status(状态):
200 :“OK”
404: 未找到页面;


AJAX 缺点介绍:
不能只说好处而不说坏处,没有完美的编程语言:
1、前进后退按钮失效
2、性能问题;
3、安全问题;
4、开发难点问题;


读取XML文件时的数据源:book.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<books>
	<book>
		<title>JAVA</title>
		<price>200</price>
	</book>
	<book>
		<title>C#</title>
		<title>八嘎</title>
		<title>dd</title>
		<price>300</price>
	</book>
	<book>
		<title>.net</title>
		<price>3.0</price>
	</book>
	<book>
		<price>3.0</price>
	</book>
</books>



使用介绍如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

	<script type="text/javascript">
		var xmlhttp;
		
		//测试IE内核版本
		function getIE()
		{	
			// IE 6.0 以上及其它浏览器
			if(window.XMLHttpRequest){
				
				xmlhttp = new XMLHttpRequest();
			
			}else{//6.0  以下的版本:IE 6 / IE 5
			
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		
		//执行操作
		function getChange(obj)
		{
			//获取正确的版本运行环境
			getIE();
			
			// 访问地址
			var url ="${pageContext.request.contextPath}/user_show.action?username="+obj.value;
			//编码转换
			var myurl = encodeURI(url);
			
			//打开:参数 :            提交方式       地址              是否异步提交
			/*
				Method: 请求类型,get/post
				url:文件在服务器上的位置
				Async: true 异步,false 同步	
				
				post 比 get 更加稳定可靠;
				post 没有数据量的限制
			*/
			xmlhttp.open("post",myurl, true);
			
			//准备好了是否回调,此处回调方法不能增加括号
			xmlhttp.onreadystatechange = getBack;
			
			//将请求发送到服务器  : string 仅用于post请求;
			xmlhttp.send();
			
		}
		
		//方法的回调
		function getBack()
		{
			//xmlhttp.readyState 请求已完成,响应已就绪
			//xmlhttp.status==200 状态OK
			if(xmlhttp.readyState == 4  && xmlhttp.status==200){
				/*
					获取服务器的响应:使用XMLHttpRequest对象的:
					responseText : 获取字符串形式的响应数据
					responseXML : 获取xml形式的响应数据
					
				*/
				document.getElementById("xx").innerHTML = xmlhttp.responseText;
			}
		}
		
		// 获取xml 文件,并读取数据
		function getXML()
		{
			getIE();
			var url = "${pageContext.request.contextPath}/book/book.xml";
			xmlhttp.open("post", url,true);
			xmlhttp.onreadystatechange = getBack2;
			xmlhttp.send();
		}
		
		//回调处理XML 中的数据
		function getBack2()
		{	
			if(xmlhttp.readyState==4 && xmlhttp.status){
				var t = xmlhttp.responseXML;
				//此处获取到的是一个集合
				var x = t.getElementsByTagName("title");
				var y = t.getElementsByTagName("price");
				alert(" "+x[2].childNodes[0].nodeValue+" "+y.length);
				var txt = "";
				for(i=0;i<x.length;i++){
					txt = txt+x[i].childNodes[0].nodeValue+" "+y[i].childNodes[0].nodeValue+"</br>";
				}
				document.getElementById("xx").innerHTML= txt;
			}
		}
	
	
	</script>
  </head>
  
  <body>
   	请输入您情人的名字:<input type="text" onblur="getXML();">
   	<div id="xx"></div>
  </body>
</html>



-->