AJAX不是一种语言,只是一种技术,不是新技术,只是一些已有技术的综合而已。
JS中的Ajax代码:
- // 创建异步请求对象
- var xmlHttp;
- function createXMLHttpRequest() {
- if (window.ActiveXObject) {
- xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
- } else if (window.XMLHttpRequest) {
- xmlHttp = new XMLHttpRequest();
- }
- }
- // 点击超链调用函数
- function showMsg() {
- // 创建异步请求对象
- createXMLHttpRequest();
- // 绑定Ajax回调处理函数,用于处理服务器端的相应
- xmlHttp.onreadystatechange = myFun;
- // 建立与服务器通信的连接
- xmlHttp.open("POST", "message");
- // 参数为null,如果get方式需要参数,直接用?传值即可。
- // 如果是post方式,有参数时即可在send中加入参数
- xmlHttp.send(null);
- }
- // 回调处理函数
- function myFun() {
- if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
- document.getElementById("show").innerHTML = xmlHttp.responseText;
- }
- }
通过以上简单实例可以看出,要使用Ajax,首先需要创建异步请求对象,可以看出在不同的浏览器下,创建对象的方式有所不同。
创建对象完成后,需要绑定回调函数。然后是通过 GET 或者 POST 方式提交数据到服务器,如果是 GET 方式,有参数时直接用问号传值;如果是 POST 方式提交数据,有参数时,则把参数放到 send(参数) 中。如下:
- // 检查姓名(GET方式)
- function checkname() {
- createXMLHttpRequest();
- xmlHttp.onreadystatechange = myFun;
- xmlHttp.open("GET", "regist?uname=" + document.getElementsByName("uname")[0].value);
- xmlHttp.send(null);
- }
- // 调用函数(POST方式)
- function showMsg2() {
- // 创建异步请求对象
- createXMLHttpRequest();
- // 绑定Ajax回调处理函数,用于处理服务器端的相应
- xmlHttp.onreadystatechange = myFun;
- // JS进行转码
- var args = "uname=" + document.getElementsByName("uname2")[0].value;
- xmlHttp.open("POST", "mycode");
- // 参数为null,如果get方式需要参数,直接用?传值即可。
- // 如果是post方式,有参数时即可在send中加入参数
- xmlHttp.send(args);
- }
从后台返回的结果在 xmlHttp.responseText 中,用于前台画面的显示。
后台代码如下:
- package com.langtuteng.test;
- 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 MessageServlet extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("text/html");
- response.setCharacterEncoding("UTF-8");
- PrintWriter out = response.getWriter();
- out.println("你好,Ajax!(GET方式提交)");
- out.flush();
- out.close();
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("text/html");
- response.setCharacterEncoding("UTF-8");
- PrintWriter out = response.getWriter();
- out.println("你好,Ajax!(POST方式提交)");
- out.flush();
- out.close();
- }
- }