學習總結之 Ajax 2

 如何得到一個XmlHttpRequest對象? javascript

Javascript代碼 複製代碼 收藏代碼
  1. function getXmlHttpRequest(){
  2. var xhr=null;
  3. if(window.XMLHttpRequest){
  4. //非ie
  5. xhr=new XMLHttpRequest();
  6. }else{
  7. //從這裏也能夠看出微軟的囂張跋扈
  8. xhr=new ActiveXObject("Microsoft.XMLHTTP");
  9. }
  10. return xhr;
  11. }



一個簡單的Ajax用法示例:檢查用戶名惟一性
Javascript代碼 複製代碼 收藏代碼
  1. function checkUsername() {
  2.  
  3. //建立checkname.do request
  4. var xhr=getXmlHttpRequest();
  5.  
  6. var username=document.getElementById("username").value;
  7. var url="checkusername?username="+username;
  8. xhr.open("get",url,true);//true,爲異步,能夠在響應回來以前進行其它操做;默認爲true
  9.  
  10. //註冊響應函數
  11. xhr.onreadystatechange=function(){
  12. //請求處理完畢後執行如下代碼
  13. //xhr有5種狀態,0到4,分別表明(0)請求未初始化,(1)請求已初始化但未發送,(2)請求已發送,(3)請求處理中,(4)請求處理完畢
  14. if(xhr.readyState==4){
  15. //響應處理, 獲取服務器返回的Text
  16. var text=xhr.responseText;
  17. document.getElementById("name_msg").innerHTML=text;
  18. }
  19. }
  20.  
  21. //發送請求
  22. xhr.send(null);
  23. }



對應的html代碼

Jsp代碼 複製代碼 收藏代碼
  1. <form method="post" action="checkusername">
  2. username:
  3. <input name="username" id="username" onblur="checkusername()" />
  4. <span id="name_msg" style="color:red"></span>
  5. <br />
  6. <input type="submit" value="OK" />
  7. </form>


對應的servlet代碼

Java代碼 複製代碼 收藏代碼
  1. import java.io.IOException;
  2. import java.io.PrintWriter;
  3.  
  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8.  
  9. public class CheckUserNameServlet extends HttpServlet {
  10.  
  11. public void service(HttpServletRequest request, HttpServletResponse response)
  12. throws ServletException, IOException {
  13. response.setContentType("text/plain;charset=utf-8");//text/plain 很重要
  14. request.setCharacterEncoding("utf-8");
  15. PrintWriter out=response.getWriter();
  16. String username = request.getParameter("username");
  17. System.out.println(username);
  18.  
  19. if ("tom".equals(username)) {//爲方便起見,直接給了一個
  20. out.print("此用戶名已被佔用");
  21. } else {
  22. out.print("能夠使用");
  23. }
  24. out.flush();
  25. out.close();
  26. }
  27. }
結果: 輸入tom,提交:提示"此用戶名已被佔用" 這種使用Ajax的方法很繁瑣,且容易出錯,一通常都用jquery發送Ajax,但做爲一個學習者,仍是有必要了解這種原始的方法的.  
相關文章
相關標籤/搜索