AJAX基礎,AJAX驗證郵箱是否存在的例子。

例子:javascript

function loadXMLDoc(email_){
	
	var xmlhttp;
	if(window.XMLHttpRequest){//判斷瀏覽器是否支持XMLHttpRequest()對象。
		xmlhttp=new XMLHttpRequest();//
	}else{//不支持的話建立ActiveXObject()對象。
		xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.onreadystatechange=function()//狀態改變時調用
	{
		if(xmlhttp.readyState==4&&xmlhttp.status==200){
			document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
		}
		else{document.getElementById("myDiv").innerHTML="用戶名拉取失敗";}
			
		
	}
	var url="do/user?email="+email_;
	xmlhttp.open("GET",url,true)
	xmlhttp.send();
}
function getValue(){//用來獲取ID的值。
	var str=document.getElementById("email").value;
	loadXMLDoc(str);
}

一下爲servlet的代碼:html

package cn.wodeschool.school.web.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.wodeschool.school.model.entity.User;
import cn.wodeschool.school.model.servicer.imple.ServiceFactory;
@WebServlet("/do/user")
public class LoginUserServlet extends HttpServlet{

	private static final long serialVersionUID = -2726821096314314651L;

	protected void doPost(HttpServletRequest request,HttpServletResponse response)
	throws ServletException,IOException{
		String op =request.getParameter("op");
		String email=request.getParameter("email");
		String password=request.getParameter("password");
		User user=new User();
		user.setEmail(email);
		user.setPassword(password);

		if("reg".equals(op)){
			doRegister(request, response,user);
		}else if("login".equals(op)){
			doLogin(request,response,user);
		}
	}

	@SuppressWarnings("unchecked")
	private void doLogin(HttpServletRequest request, HttpServletResponse response,User user) throws IOException {
		List<User>	list=ServiceFactory.getService("user").findByConditions(user.getEmail());
				if(list.isEmpty()||!list.get(0).getPassword().equals(user.getPassword())){
					response.getWriter().write("用戶名或者密碼錯誤");
					return;
				}
				request.getSession().setAttribute("user", list.get(0));
				response.getWriter().write("登陸成功");
		}

	private void doRegister(HttpServletRequest request, HttpServletResponse response,User user) throws IOException {
		String phone=request.getParameter("phone");
		String name=request.getParameter("name");
		String profession=request.getParameter("profession");
		user.setName(name);
		user.setPhone(phone);
		user.setProfession(profession);
		@SuppressWarnings("unchecked")
		List<User> list=ServiceFactory.getService("user").findByConditions(name);
		if(!list.isEmpty()){
			response.getWriter().write("該郵箱已經被註冊");
			return;
		}
		int row=ServiceFactory.getService("user").save(user);
		//request.getSession().setAttribute("users", user);
		System.out.println(row);
	}

	protected void doGet(HttpServletRequest request,HttpServletResponse response)
			throws ServletException,IOException{
		String email=request.getParameter("email");
		System.out.println(email);
		@SuppressWarnings("unchecked")
		List<User> list=ServiceFactory.getService("user").findByConditions(email);
		if(list.isEmpty()){
			response.getWriter().write("郵箱可用");
			return ;
		}else{
			response.getWriter().write("該郵箱已經被註冊");
		}
	}
}

XMLHttpRequest是ajax的基礎,建立xmlhttprequest的方法是:老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 對象:java

variable=new XMLHttpRequest(); variable=new ActiveXObject("Microsoft.XMLHTTP");

在使用時首先判斷瀏覽器是否支持XMLHttpRequest對象if(window.XMLHttpRequest)。web

若是須要向服務器發送請求,使用XMLHttpRequest對象的open()和send()方法。ajax

xmlhttp.open("method","url"async);
xmlhttp.send();

method表示請求的方式,post或者get,url請求的地址。async:true(異步)或false(同步).瀏覽器

send(string)將請求發送到服務器,string僅用於POST請求。服務器

簡單的POST請求。app

xmlhttp.open("POST","demo_a",true);
xmlhttp.send();異步

若是要想HTML表單那樣post數據,使用setRequestHeader()來添加HTTP頭。async

xmlhttp.open("POST","ajax_test.html",true);
 xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
 xmlhttp.send("fname=Henry&lname=Ford");

setRequestHeader(header,value) header.規定頭的名稱,value:規定頭的值。

xmlhttp.responseText;//得到字符串形式的響應數據;

 

onreadystatechange 事件

當請求被髮送到服務器時,咱們須要執行一些基於響應的任務。

每當 readyState 改變時,就會觸發 onreadystatechange 事件。

readyState 屬性存有 XMLHttpRequest 的狀態信息。

下面是 XMLHttpRequest 對象的三個重要的屬性:

屬性 描述
onreadystatechange 存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。
readyState

存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。

  • 0: 請求未初始化
  • 1: 服務器鏈接已創建
  • 2: 請求已接收
  • 3: 請求處理中
  • 4: 請求已完成,且響應已就緒
status 200: "OK"
404: 未找到頁面

 

菜鳥教程的例子:http://www.runoob.com/ajax/ajax-xmlhttprequest-onreadystatechange.html

相關文章
相關標籤/搜索