概要

Ajax是“Asynchronous JavaScript and XML”的简称,即异步的JavaScript和XML。

readyState属性用来返回当前的请求状态,有五个可选值。分别是0到4,每个值的含义如下描述。 0:“未初始化”状态, 表示已经创建一个XMLHttpRequest对象,但是还没有初始化请求对象。 1:“打开”状态,表示已经调用了XMLHttpRequest对象的open()方法,已经准备好向服务器端发送请求。 2:“发送”状态,表示已经调用了XMLHttpRequest对象的send()方法把一个请求发送到服务器端,但是还没有收到服务器的响应。 3:“正在接收”状态,表示已经接收到HTTP响应头的信息,但是消息体部分还没有完全接收。 4:“已加载”状态,表示响应已经被完全接收。

status属性用来返回服务器的响应状态码,例如200表示OK,一切正常;404表示请求的文件没有找到;500表示内部服务器发生错误等。

statusText属性的含义与status属性非常类似,不过statusText用文本的形式表示服务器的响应状态,而status以状态码的形式表示。例如,statusText值为OK时,表示一切正常,对应status为200;值为Not Found表示文件没有找到,对应status为404。

onreadystatechange是一个事件触发器,其值往往是一个JavaScript的函数名。任何一个状态的变化,不管是readyState还是status的变化,都会触发该事件,并调用指定的JavaScript函数。

responseText属性用来接收服务器端返回的文本内容,以一个字符串的形式存在。使用responseText属性可以直接将返回的内容赋值给某一个域的innerHTML值,显示到客户端。

responseXML用来接收服务器的响应,以XML的形式存在,这个对象可以解析为一个DOM对象,进一步使用DOM的API更新客户端页面。

GET方式解析XML的AJAX

js代码:

var xmlHttp;
//创建XMLHttpRequest对象
function createXMLHttpRequest() {
if (window.ActiveXObject) {//Microsoft xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
} function validate() {
//创建xmlHttp对象
createXMLHttpRequest();
//使用DOM,得到id值是username的域
var username = document.getElementById("username");
var url = "ValidateUsernameServlet?username=" + escape(username.value);
//向服务器端的 ValidateUsernameServlet发送异步请求
xmlHttp.open("GET", url, true);
//当状态有变化的时候,调用callback方法
xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
} function callback() {
//当客户端完全接收完服务器的响应后,并且状态为200,也就是正常
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
//使用responseXML属性,接收服务器端返回的的XML文件 ,使用DOM解析XML //用以下二种方式都可以得到页面上的值
//var message = xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;
var message = xmlHttp.responseXML.getElementsByTagName("message")[0].childNodes[0].nodeValue
var passed = xmlHttp.responseXML.getElementsByTagName("passed")[0].firstChild.data;
setMessage(message, passed);
}
}
}
function setMessage(message, passed) {
//使用DOM得到id值为usernamemsg的域,用来显示提示信息
var validateMessage = document.getElementById("usernamemsg");
var fontColor = "red";
if (passed == "true") {
fontColor = "green";
}
validateMessage.innerHTML = "<font color=" + fontColor + ">" + message
+ " </font>";
}

servlet代码:

public class ValidateUsernameServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request,response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8"); boolean flag=true;
String message=""; //用户名可以使用
boolean e=true;
if(e == true){
message="用户名可以使用";
}else{
flag=false;
message="用户名已经存在,请选择使用其他用户名";
} // 将校验的结果,以XML格式返回给客户端
response.setContentType("text/xml;charset=utf-8");
PrintWriter out = response.getWriter();
//禁止缓存 HTTP1.0中通过Pragma 控制页面缓存,HTTP1.1中启用Cache-Control 来控制页面的缓存与否
//参数:no-cache,浏览器和缓存服务器都不应该缓存页面信息;
response.setHeader("Cache-Control","no-cache");
out.println("<?xml version='1.0' encoding='"+"utf-8"+"' ?>");
out.println("<response>");
out.println("<passed>" + flag + "</passed>");
out.println("<message>" + message + "</message>");
out.println("</response>");
out.close();
}
}

html代码根据实际需求编写,这里不做演示。

POST方式解析XML的AJAX

js代码:

 var xmlHttp;
//创建XMLHttpRequest对象
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
} function validate() { //创建xmlHttp对象
createXMLHttpRequest();
//使用DOM,得到id值是username的域
var username = document.getElementById("username"); var url = "ValidateUsernameServlet";
//向服务器端的 ValidateUsernameServlet发送异步请求
xmlHttp.open("POST", url, true); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//当状态有变化的时候,调用callback方法
xmlHttp.onreadystatechange = callback; xmlHttp.send("username="+encodeURI(username)); } function callback() {
//当客户端完全接收完服务器的响应后,并且状态为200,也就是正常
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
//使用responseXML属性,接收服务器端返回的的XML文件 ,使用DOM解析XML
var message = xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;
var passed = xmlHttp.responseXML.getElementsByTagName("passed")[0].firstChild.data;
setMessage(message, passed);
}
}
} function setMessage(message, passed) {
//使用DOM得到id值为usernamemsg的域,用来显示提示信息
var validateMessage = document.getElementById("usernamemsg");
var fontColor = "red";
if (passed == "true") {
fontColor = "green";
}
validateMessage.innerHTML = "<font color=" + fontColor + ">" + message + " </font>";
}

servlet代码与GET方式相同。

POST方式解析文本的AJAX

js代码:

var xmlHttp;
//创建XMLHttpRequest对象
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
} function validate() { //创建xmlHttp对象
createXMLHttpRequest();
//使用DOM,得到id值是username的域
var username = document.getElementById("username"); var url = "ValidateUsernameServlet2";
//向服务器端的 ValidateUsernameServlet发送异步请求
xmlHttp.open("POST", url, true); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//当状态有变化的时候,调用callback方法
xmlHttp.onreadystatechange = callback; xmlHttp.send("username="+encodeURI(username)); } function callback() {
//当客户端完全接收完服务器的响应后,并且状态为200,也就是正常
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
//使用responseXML属性,接收服务器端返回的的XML文件 ,使用DOM解析XML
var responseText=xmlHttp.responseText;
document.getElementById("usernamemsg").innerHTML=responseText; }
}
}

servlet代码:

public class ValidateUsernameServlet2 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8"); boolean flag = true;
String message = ""; // 用户名可以使用
boolean e = true;
if (e == true) {
message = "用户名可以使用";
} else {
flag = false;
message = "用户名已经存在,请选择使用其他用户名";
} // 将校验的结果,以XML格式返回给客户端
response.setContentType("text/xml;charset=utf-8");
PrintWriter out = response.getWriter();
// 禁止缓存 HTTP1.0中通过Pragma 控制页面缓存,HTTP1.1中启用Cache-Control 来控制页面的缓存与否
// 参数:no-cache,浏览器和缓存服务器都不应该缓存页面信息;
response.setHeader("Cache-Control", "no-cache");
out.println("<font color='red'>" + message + "</font>");
out.flush();
out.close();
} }

配合JAVA的AJAX使用的更多相关文章

  1. 利用 FormData 对象和 Spring MVC 配合可以实现Ajax文件上载功能

    Ajax文件上载 利用 FormData 对象和 Spring MVC 配合可以实现Ajax文件上载功能: 步骤 导入组件并准备静态脚本 <dependency> <groupId& ...

  2. 使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能。并且在界面上有radio 的选择内容也要上传

    使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能.并且在界面上有radio 的选择内容也要上传 uploadify 插件的 下载和文档地址  ...

  3. JAVA中AJAX的使用

    AJAX<%@ page language="java" import="java.util.*" pageEncoding="UTF-8&qu ...

  4. Java之Ajax技术

    ajax(asynchronouse javascript and xml) 异步的javascript 和 xml(现在常把xml换成json): ajax是2005年提出的,在2006,2007年 ...

  5. Java实现ajax

    jsp端的代码,sucess:function(){} 里面就是返回的处理 function ChangeTime(){ alert("www"); var startYmd = ...

  6. 分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708]http ...

  7. java、ajax 跨域请求解决方案('Access-Control-Allow-Origin' header is present on the requested resource. Origin '请求源' is therefore not allowed access.)

      1.情景展示 ajax调取java服务器请求报错 报错信息如下: 'Access-Control-Allow-Origin' header is present on the requested ...

  8. java,jq,ajax写分页

    1.先写好html基础样式 我懒得去写css样式233,能看就行 <style> #page { width: 20px; } </style> <table> & ...

  9. java + jquery + ajax + json 交互

    前端js部分: $.ajax({ async:true, cache:false, type:"POST", dataType : 'json', url:"/shopp ...

随机推荐

  1. Redis安装与简单配置

    一.Redis介绍 1.redis是什么? remote dIctionary server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Redis提 ...

  2. android Service服务(二)

    1.1 活动和服务进行通信 上一节中我们学习了启动和停止服务的方法.不知道你又没有发现,虽然服务是在活动里启动的,但在启动了服务之后,活动和服务基本上就没关系了,确实如此,我们在活动里调用了start ...

  3. vue入门——基本概念

    1. 挂载点,模板,实例的关系? 首先附上一个基本demo: <!DOCTYPE html> <html lang="en"> <head> & ...

  4. Spring常见面试题

    本文是通过收集网上各种面试指南题目及答案然后经过整理归纳而来,仅仅是为了方便以后回顾,无意冒犯各位原创作者. Spring框架 1. 什么是Spring? Spring 是个java企业级应用的开源开 ...

  5. ThinkPHP框架目录的介绍

    library目录 Think目录 mvc

  6. CPS---(Cyber-Physical Sytem,信息物理融合系统)

    1.CPS定义 CPS是连接计算机虚拟世界与物理现实世界的系统.---We refer to systems that bridge the cyber-world of computing and ...

  7. windows环境下安装scrapy框架报错问题--最快捷有效的解决方案

    windows在执行如下命令,安装scrapy的过程中会报错: pip install scrapy 报错分析: windows环境下,会出现如下错误: 1.提示的错误是编译环境的问题,字面意思看需要 ...

  8. C语言实例解析精粹学习笔记——30

    实例30: 用已知字符串s中的字符,生成由其中n个字符组成的所有字符排列.设n小于字符串s的字符个数,其中s中的字符在每个排列中最多出现一次.例如,对于s[]="abc",n=2, ...

  9. System.Speech使用

    使用微软语音库 使用微软语音库可以很快速的制作一个小应用,比如一个唐诗的朗诵工具.本示例也是使用微软语音库,制作了一个唐诗宋词朗诵的应用,仅供加深学习印象 首先是要引入System.Speech库 然 ...

  10. 开启一个项目如何上传到git

    1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2.把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点 ...