AJAX入门实例

AJAX原理与实践

regist.jsp代码如下:

<%@ page contentType="text/html; charset=utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
		<title>注册页面</title>
		<script type="text/javascript" src="js/ajax.js">
	
</script>
		<script type='text/javascript'>
	function myAlert(strTitle) {
		var message = document.getElementById("myDiv").innerHTML;
		var win1 = new Zapatec.AlertWindow(message, {
			title : strTitle,
			modal : true,
			width : 580,
			height : 330
		});
	}
	function doCheck() {
		var f = document.forms[0];
		if (f.username.value != "") {
			document.getElementById("feedback_info").innerHTML= "系统正在处理您的请求,请稍后。";
			send_request("POST", "checkUsername.jsp?username="+ 
			f.username.value, null, "text", showFeedbackInfo);//第1步:AJAX通过浏览器的内置对象XMLHttpRequest向服务器发出请求。
		} else {
			document.getElementById("feedback_info").innerHTML = "请输入用户名称。";
		}
	}
	function showFeedbackInfo() {
		if (http_request.readyState == 4) { // 判断对象状态
			if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
				document.getElementById("feedback_info").innerHTML = http_request.responseText;
			} else { //页面不正常
				alert("您所请求的页面有异常。");
			}
		}
	}
	//-->
</script>
	</head>
	<body>
		<form name="form1" method="post" action="">
			<table style="font-size: 12px;">
				<tr>
					<td width="80">
						用户名:
					</td>
					<td>
						<input type="text" name="username" onblur="doCheck()">
					</td>
				</tr>
				<tr>
					<td colspan="2">
						<span id="feedback_info" style="color: #FF0000"></span>
					</td>
				</tr>
				<tr>
					<td>
						一级密码:
					</td>
					<td>
						<input type="password" name="pwd">
					</td>
				</tr>
			</table>
		</form>
	</body>
</html>

checkUsername.jsp代码如下:

<%@ page contentType="text/html; charset=utf-8"%>
<%
	String name = request.getParameter("username");//第2步,服务器接受请求并处理请求
	String username = new String(name.getBytes("ISO8859-1"), "gb2312");//2.1,服务器处理请求
	if (username.equals(""))
		out.println("用户名称[" + username + "]低俗不堪!请换一个用户名称注册!");//2.2,服务器将处理结果返回
	else
		out.println("用户名称[" + username + "]符合规范!您可以继续。");
%>

ajax.js代码如下:

//定义XMLHttpRequest对象实例

var http_request = null;

// 定义可复用的http请求发送函数

function send_request(method, url, content, responseType, callback) {// 初始化、指定处理函数、发送请求的函数
	http_request = null;
	// 开始初始化XMLHttpRequest对象
	if (window.XMLHttpRequest) { // Mozilla 、在IE7+、firefox浏览器
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {// 设置MiME类别
			http_request.overrideMimeType("text/xml");
		}
	} else if (window.ActiveXObject) { // IE5、6浏览器
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
			}
		}
	}
	if (!http_request) { // 异常,创建对象实例失败
		window.alert("不能创建XMLHttpRequest对象实例.");
		return false;
	}
	// 以下为第3步:AJAX收到结果,按照你设定的方式解析结果并更改页面内容。
	// alert(responseType.toLowerCase());
	if (responseType.toLowerCase() == "text") {
		// http_request.onreadystatechange = processTextResponse;
		http_request.onreadystatechange = callback;
	} else if (responseType.toLowerCase() == "xml") {
		// http_request.onreadystatechange = processXMLResponse;
		http_request.onreadystatechange = callback;
	} else {
		window.alert("响应类别参数错误。");
		return false;
	}
	// 确定发送请求的方式和URL以及是否异步执行下段代码
	if (method.toLowerCase() == "get") {
		http_request.open(method, url, true);
	} else if (method.toLowerCase() == "post") {
		http_request.open(method, url, true);
		http_request.setRequestHeader("Content-Type",
				"application/x-www-form-urlencoded");
	} else {
		window.alert("http请求类别参数错误。");
		return false;
	}
	http_request.send(content);
}
// 处理返回文本格式信息的函数
function processTextResponse() {
	if (http_request.readyState == 4) { // 判断对象状态
		if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
			// alert(http_request.responseText);
			alert("Text文档响应。");
		} else { // 页面不正常
			alert("您所请求的页面有异常。");
		}
	}
}
// 处理返回的XML格式文档的函数
function processXMLResponse() {
	if (http_request.readyState == 4) { // 判断对象状态
		if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
			// alert(http_request.responseXML);
			alert("XML文档响应。");
		} else { // 页面不正常
			alert("您所请求的页面有异常。");
		}
	}
}


AJAX即"AsynchronounsJavaScriptandXML"(异步JavaScript和XML),AJAX并非缩写词,而是由JesseJamesGaiie创造的名词,是指一种创建交互式网页应用的网页开发技术。

AJAX最根本的原理就是在不刷新页面的情况下访问服务器处理数据,并根据数据的处理结果按你想要的方式对页面做出及时的更改。

具体流程(三大步):

AJAX向服务器发出请求-->服务器接受请求,处理请求并将处理结果返回-->AJAX收到结果,按照你设定的方式解析结果并更改页面内容。

AJAX的核心是JavaScript对象XMLHttpRequest。该对象在InternetExplorer5中首次引入,它是一种支持异步请求的技术。简而言之,XMLHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。


### Ajax基本概念与入门教程 #### 什么是AJAXAJAX(Asynchronous JavaScript and XML),即异步JavaScript和XML,是一种用于创建快速动态网页的技术[^1]。它并不是一种新的编程语言,而是将现有的一些技术组合起来的一种新方式[^4]。 #### AJAX的核心功能 通过AJAX,可以实现在不重新加载整个页面的情况下与服务器交互并更新部分网页内容。这种方式显著提高了用户的体验感以及应用的性能[^4]。 --- ### AJAX的基本使用方法 #### 创建`XMLHttpRequest`对象 要发起一个AJAX请求,首先需要创建一个`XMLHttpRequest`对象。现代浏览器支持原生的方式创建该对象;而在较老版本的IE浏览器中,则需使用`ActiveXObject`来完成这一过程[^3]: ```javascript var xmlhttp; if (window.XMLHttpRequest) { // 对于大多数现代浏览器 xmlhttp = new XMLHttpRequest(); } else { // 针对旧版IE浏览器 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } ``` #### 设置请求参数并通过`open()`方法初始化请求 在准备好`XMLHttpRequest`对象之后,可以通过调用其`open()`方法指定请求的方法(GET/POST)、URL地址以及其他选项[^2]: ```javascript xmlhttp.open("POST", "ServletAjax?userName=" + name, true); ``` 上述代码片段展示了如何利用`POST`方法向名为`ServletAjax`的服务端资源发送带有用户名参数的请求[^3]。 #### 发送请求至服务器 一旦配置好请求细节,就可以借助`send()`函数正式提交这个请求到远程服务器上去了: ```javascript xmlhttp.send(); ``` 此时,客户端会等待来自服务端对于此请求作出回应的动作发生。 #### 处理服务器返回的结果 当接收到由服务器发回的信息时,通常会在回调函数内部对其进行解析处理。这一步骤涉及到了两个重要的属性——`readyState` 和 `status` 的判断逻辑[^3]: ```javascript xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState === 4 && xmlhttp.status === 200) { var returnString = xmlhttp.responseText; document.getElementById("tips").innerText = returnString; } }; ``` 在这里,“就绪状态”(`readyState`)等于4意味着完整的响应已经到达,而“状态码”(`status`)为200表示成功接收到来自服务器的有效回复。 --- ### 完整示例代码 下面给出的是基于前面所提到的知识点构建的一个完整的小型案例演示程序[^3]: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>AJAX Example</title> <script type="text/javascript"> // 初始化变量存储xhr实例 var xmlhttp; function createXmlHttp() { try { if (window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); }else{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } } catch(e){alert('您的浏览器无法支持XMLHttpRequest!');} } function sendRequest(url,param,callback){ createXmlHttp(); if (!xmlhttp) {return;} xmlhttp.onreadystatechange=callback; xmlhttp.open("POST",url,true); xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8"); xmlhttp.send(param); } function checkName(){ var name=document.getElementById("userName").value; sendRequest("checkname.php",{username:name},processResponse); } function processResponse(){ if(xmlhttp.readyState==4&&xmlhttp.status==200){ document.getElementById("resultDiv").innerHTML+xmlhttp.responseText+"<br>"; } } </script> </head> <body onload="createXmlHttp()"> <input id="userName"/> <button onclick="checkName()">Check Name Availability</button><br/> <div id="resultDiv"></div> </body> </html> ``` 以上HTML文档定义了一个输入框让用户填写名字,并提供按钮触发验证动作。点击后,前端脚本负责把用户录入的名字传递给后端PHP文件进行校验工作,最后再把结果显示出来[^3]。 --- ### 总结 AJAX使得开发者能够更加灵活地控制web应用程序的行为模式,在不需要完全重载页面的前提下即可实现局部区域的内容刷新效果。这对于提高用户体验度有着不可忽视的作用。 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值