Ajax

Posted 清泉***

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ajax相关的知识,希望对你有一定的参考价值。

1、Ajax全称:异步JavaScript和XML(Asynchronous JavaScript And XML)。

2、Ajax使用XMLHttpRequest对象发送请求并获得服务器端的响应,同时Ajax可以在不重新载入整个页面的情况下用JavaScript操作DOM以实现最终更新页面。

3、Ajax的四个主要组件(JavaScript、、CSS、 DOM、 XMLHttpRequest对象)。

4、使用XHR前,必须用JavaScript创建一个XHR对象 IE把XHR实现为一个ActiveX对象 其他浏览器实现为一个本地JavaScript对象 由于这些差别,所以创建XHR时需要用分支逻辑。

一、注册页面

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
//http://localhost:8080/zuoye/
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- 向服务器发送请求时的总会添加路径上basePath,http://localhost:8080/zuoye/ -->
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>

<script language="javascript">
	        function check(form){
		       if(form.username.value==""){
			      alert("请输入用户名!");form.username.focus();return false;
		       }
		      if(form.password.value==""){
			     alert("请设置密码!");form.password.focus();return false;
		       }
		      if(form.password.value!=form.pwd.value){
			     alert("和上次输入密码不同,请重新输入!");form.pwd.focus();return false;
		       }
	         }
	        
	        var xhr;
	    	function checkUsername() {
	    		//获取标签
	    		var checkResult = document.getElementById("checkResult");
	    		checkResult.innerHTML = "<font color=‘red‘ size=‘1‘>正在检测用户名...</font>";
	    		//获取用户输入的用户名
	    		var username = document.getElementById("username").value;
	    		//创建浏览器中可以发送异步请求的对象xhr,不同浏览器的创建方式不同
	    		if(window.ActiveXObject){//IE浏览器
	    			xhr = new ActiveXObject("Microsoft.XMLHttp");
	    		}else if(window.XMLHttpRequest){//不是IE浏览器
	    			xhr = new XMLHttpRequest();
	    		}
	    		
	    		//事件监听(一旦发现状态发生变化,就执行函数handleRequest,得到服务器响应完成页面局部刷新)
	    		xhr.onreadystatechange = handleRequest;
	    		/*用GET方式发送请求
	    		xhr.open("GET","UserServlet?f=1&username="+username,true);
	    		xhr.send(null);	*/
	    		
	    		//POST发送请求
	    		xhr.open("POST","user/checkUsername.do",true);
	    		//设置POST请求的头
	    		xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	    		//发送请求数据
	    		xhr.send("username="+username);
	    	}
	    	
	    	//得到服务器响应,完成页面局部刷新
	    	function handleRequest() {
	    		//获取标签
	    		var checkResult = document.getElementById("checkResult");
	    		if(xhr.readyState == 4){
	    			if(xhr.status == 200){
	    				checkResult.innerHTML = "<font color=‘red‘>"+xhr.responseText+"</font>";
	    				return ture;
	    			}else{
	    				alert("该用户名已注册,请重新输入");return false;
	    			}
	    		}
	    	}
	   </script>

</head>


<body>
	<h1 style="font-size:28px;blue">用户注册</h1>
	
	<form action="user/register.do" method="post" onSubmit="return check(this)">
	用户名 :<input type="text" id="username" name="username"  onblur="checkUsername();"/><br>
	设置密码:<input type="password" id="password" name="password"/><br>
		<input type="reset" value="重置">         
		<input type="submit" value="注册" />         
		<a href="user/login.do" >登录</a>
		
	</form>
</body>
</html>

  

二、添加页面

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%
String path = request.getContextPath();
//http://localhost:8080/zuoye/
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- 向服务器发送请求时的总会添加路径上basePath,http://localhost:8080/zuoye/ -->
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>添加联系人信息</title>

<script language="javascript">
	        function check(form){
		       if(form.name.value==""){
			      alert("请输入用户名!");form.name.focus();return false;
		       }
		      if(form.gender.value==""){
			     alert("请选择性别!");form.gender.focus();return false;
		       }
		      if(form.profession.value==""){
		    	  alert("请输入联系人的职业!");form.profession.focus();return false;
		      }
		      if(form.address.value==""){
			     alert("请输入地址!");form.address.focus();return false;
		       }
		      if(form.phone.value==""){
				 alert("请输入电话!");form.phone.focus();return false;
			   }
			  objExp=/^1[3|5|7|8][0-9]\d{4,8}$/;
			  if(form.phone.value!="" && !objExp.test(form.phone.value)){
			  alert("您输入的手机号码不合法!");form.phone.focus();return false;
			   }
			  objExp=/[1-9]\d{5}(?!\d)/;
		      if(form.zipcode.value!=""&&!objExp.test(form.zipcode.value)){
			     alert("您输入的邮编不合法!!");form.zipcode.focus();return false;
		       }
			 
	         }
	   </script>

</head>
<body>
	<form action="linkman/add.do" method="post" onSubmit="return check(this)">
		<table align="center" width="80%" border="1px">
			<tr>
				<td>姓名:</td>
				<td><input type="text" name="name"></td>
			</tr>
			<tr>
				<td>性别:</td>
				<td>
					<select name="gender">
						<option value="">--请选择--</option>
						<option value="1">男</option>
						<option value="0">女</option>
					</select>						
				</td>
			</tr>
			<tr>
				<td>职业:</td>
				<td><input type="text" name="profession"></td>
			</tr>
			<tr>
				<td>生日:</td>
				<td><input type="text" name="birthday"></td>
			</tr>
			<tr>
				<td>住址:</td>
				<td><input type="text" name="address"></td>
			</tr>
			<tr>
				<td>联系方式:</td>
				<td><input type="text" name="phone"></td>
			</tr>
			<tr>
				<td>邮箱地址:</td>
				<td><input type="text" name="phone"></td>
			</tr>
			<tr>
				<td><input type="submit" value="确定添加本联系人"></td>
				<td><input type="reset" value="取消添加本联系人"></td>
				
			</tr>
		</table>
	</form>
</body>
</html>

  

 

以上是关于Ajax的主要内容,如果未能解决你的问题,请参考以下文章

Javascript代码片段在drupal中不起作用

前端面试题之手写promise

Ajax 片段元标记 - Googlebot 未读取页面内容

执行AJAX返回HTML片段中的JavaScript脚本

javascript AJAX片段

Spring MVC 3.2 Thymeleaf Ajax 片段