例子: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;//得到字符串形式的響應數據;
當請求被髮送到服務器時,咱們須要執行一些基於響應的任務。
每當 readyState 改變時,就會觸發 onreadystatechange 事件。
readyState 屬性存有 XMLHttpRequest 的狀態信息。
下面是 XMLHttpRequest 對象的三個重要的屬性:
屬性 | 描述 |
---|---|
onreadystatechange | 存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。 |
readyState | 存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。
|
status | 200: "OK" 404: 未找到頁面 |
菜鳥教程的例子:http://www.runoob.com/ajax/ajax-xmlhttprequest-onreadystatechange.html