下面例子是介紹使用Ajax的post 方法,ajax的post方法使用比較多。
這個例子的作用是:輸入一個使用者名稱,檢查下使用者名稱是否可以用。
<一>:建個ajax的工具類
(1):建個ajaxUtils.js
(2):裡面代碼如下
var Ajax = {createXHR : function() {// 建立XHR對象if (window.XMLHttpRequest) {// 針對除IE瀏覽器以外的var xhr = new XMLHttpRequest();return xhr;} else if (window.ActiveXObject) {// 針對IE瀏覽器的var xhr = new ActiveXObject("Microsoft.XMLHTTP");return xhr;}},sendRequest : function(method, url, data, callback) {// callback代表函數名var xhr = this.createXHR();xhr.open(method, url, true);if ("GET" == method.toUpperCase()) {xhr.send(null);} else if ("POST" == method.toUpperCase()) {xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xhr.send(data);}xhr.onreadystatechange = function() {if (xhr.readyState == 4 && xhr.status == 200) {// callback(xhr);可以這樣callback({text : xhr.responseText,xml : xhr.responseXML});// 也可以這樣。這樣最好,物件導向}}}};
<二>:建jsp,在jsp中引入ajaxUtils.js工具類,jsp代碼中如下
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script type="text/javascript" src="${pageContext.request.contextPath }/jsp/ajax/ajaxUtils.js""></script><script type="text/javascript">function checkUserName(){var username = document.getElementById("name").value;var password = document.getElementById("pwd").value;var url = "${pageContext.request.contextPath }/servlet/AjaxPostServlet";// 使用Ajax工具類,4個入參// 第一個入參:字串"get"// 第二個入參:請求的url// 第三個入參:請求的參數// 第四個入參:回呼函數,函數名隨便起,這裡我起了callbackAjax.sendRequest("post",url,"username="+username+"&password"+password, callback);}// 經過Servlet處理後返回的資訊function callback(data){// 後台返回的是字串,就用data.text,如果返回的是xml對象,則就用data.xmlvar value = data.text;//這個value要麼是Servlet裡out.print()裡的內容alert(value);}</script><title>學習ajax的Post方法</title></head><body><center><form action="" method="post">username:<input type="text" size="25" value="" id="name" name="username"/><input type="button" value="檢查是否被佔用" onclick="checkUserName();"/><br /><br /><br />password:<input type="password" size="25" value="" id="pwd" name="password" /><br /><br /></form></center></body></html>
<3>:配置WEB-INF下面的web.xml
<servlet> <servlet-name>ajaxPostServlet</servlet-name> <servlet-class>com.web.AjaxPostServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ajaxPostServlet</servlet-name> <url-pattern>/servlet/AjaxPostServlet</url-pattern> </servlet-mapping>
<4>:建Servlet,如AjaxPostServlet,代碼如下
package com.web;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class AjaxPostServlet extends HttpServlet{@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");response.setHeader("Cache-Control", "no-cache");PrintWriter out = response.getWriter();String username = request.getParameter("username");String password =request.getParameter("password");if("zhangsan".equals(username)){//此處是out.print不是out.printlnout.print("不可用");//out.print()裡的內容將會輸出到jsp頁面中callback函數裡}else{out.print("可以使用");}out.flush();out.close();}}