- 浏览: 28538 次
- 性别:
- 来自: 北京
最新评论
1、AJAX
1.2、AJAX概述
AJAX:Asynchronoused Javascript And Xml,异步的js与xml。
AJAX可以完成的功能:提高用户体验,提高开发效率,自动回填功能!就是在页面不改变的情况下进入Servlet/Action,并查询数据。
例如:验证用户名是否重复,联动菜单,百度提示,分页,树型列表
要完成AJAX,首先需要浏览器支持一个XMLHttpRequest的对象,这个对象是AJAX的核心对象。
需要注意编写时的两个点。一个是调用时的操作js,还有一个是Servlet/Action返回时调用的js(回调函数)
1.3、使用AJAX完成用户名验证
编写注册页面,加入onblur事件
<form
action="" method="post" onsubmit="return
checkform()">
用户ID: <input
type="text" name="userid" id="userid"
onblur="checkid(this.value);"/> <br/>
真实姓名: <input
type="text" name="username" id="username"/>
<br/>
密码: <input
type="password" name="password"
id="password"/> <br/>
<input
type="submit" value="注册"/>
</form>
编写js操作,先建立出XMLHttpRequest核心对象。
<script
type="text/javascript">
var
xmlHttp ;
function
createXMLHttp() { // 判断浏览器类型
if
(window.XMLHttpRequest) {
xmlHttp
= new XMLHttpRequest(); // FF的内核
}
else {
xmlHttp
= new ActiveXObject("Microsoft.XMLHTTP"); // IE内核
}
}
function
checkid(userid) {// 调用AJAX操作,固定的4个步骤
//
1:创建对象
createXMLHttp();
//
2:设置提交路径 xmlHttp.open("post","${pageContext.request.contextPath}/AjaxServlet?status=checkid&userid="+userid);
//
3:设置回调函数,使Servlet执行后可以自动调用某一个js方法
xmlHttp.onreadystatechange
= checkidCallback ;
//
4:发送,提交
xmlHttp.send();
}
function
checkidCallback() { // 判断当前状态,在回调函数中,一共执行了4次.
//
在核心对象中包含一个叫readyState的属性,该属性在执行AJAX的过程中会按照 1 -
4 值改变,当该值改变时,就会自动执行回调函数
//
按照以下情况进行改变
//
1:执行open方法时
//
2:执行到send方法时
//
3:执行到Servlet中的out.print时
//
4:执行到Servlet中的out.close时执行
if
(xmlHttp.readyState == 4) {
//
还要判断是否正确执行,执行过程中是否出现了异常
if
(xmlHttp.status == 200) {
//
接收Servlet的返回值
var
value = xmlHttp.responseText ;
alert(value);
}
else {
alert("执行过程中出现了异常,请与管理员联系:" +
xmlHttp.readyState);
}
}
}
function checkform() {
return
flag ;
}
</script>
编写Servlet
public class AjaxServlet extends
HttpServlet {
public
void doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
this.doPost(request,
response);
}
public
void doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
String
status = request.getParameter("status");
if
("checkid".equals(status)) {
// 接收参数
String
userid = request.getParameter("userid");
//
调用服务
boolean
flag = ServiceFactory.getUserServiceInstance().checkUserid(
userid);
//
AJAX返回时,需要使用下面的out对象,通过out.print返回数据
response.setContentType("text/html");
PrintWriter out =
response.getWriter();//注意,返回数据时,不能在out.print后加ln
out.print(flag);
out.close();
//
一定不要跳转
}
}
}
1.4、联动菜单
页面加入连接
<a
href="${pageContext.request.contextPath}/AjaxServlet?status=showArea">联动菜单</a>
完成Servlet中的查询操作。
public class AjaxServlet extends
HttpServlet {
public
void doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
this.doPost(request,
response);
}
public
void doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
String
status = request.getParameter("status");
if
("checkid".equals(status)) { //
接收参数
String
userid = request.getParameter("userid");// 调用服务
boolean
flag = ServiceFactory.getUserServiceInstance().checkUserid( userid);
//
AJAX返回时,需要使用下面的out对象,通过out.print返回数据
response.setContentType("text/html");
PrintWriter
out = response.getWriter();
out.print(flag);
out.close();//
一定不要跳转
}
else if ("showArea".equals(status)) {
List<Area>
allArea = null;
allArea
= ServiceFactory.getAreaServiceInstance().findAllArea();
request.setAttribute("allArea",
allArea);
request.getRequestDispatcher("/pages/front/area_list.jsp").forward(request,
response);
}
else if ("showplus".equals(status)) {
int
upid = Integer.parseInt(request.getParameter("upid"));
List
allPlus = ServiceFactory.getAreaServiceInstance().findByUpid(upid);
response.setContentType("text/html");
//
一定注意乱码处理
response.setCharacterEncoding("GBK");
PrintWriter
out = response.getWriter();
if
(allPlus != null && allPlus.size() > 0) {
Iterator
iter = allPlus.iterator();
while(iter.hasNext())
{
Areaplus
plus = (Areaplus) iter.next();
out.print(plus.getId()
+ ":");
out.print(plus.getTitle()
+ "|");
}
}
out.close();
}
}
}
编写页面显示两个下拉列表
<html>
<head>
<title>联动菜单</title>
<script
type="text/javascript">
var
xmlHttp ;
function
createXMLHttp() {
//
判断浏览器类型
if
(window.XMLHttpRequest) {
xmlHttp
= new XMLHttpRequest(); // FF的内核
}
else {
xmlHttp
= new ActiveXObject("Microsoft.XMLHTTP"); // IE内核
}
}
function
showplus(upid) {
createXMLHttp(); xmlHttp.open("post","${pageContext.request.contextPath}/AjaxServlet?status=showplus&upid="+upid);
xmlHttp.onreadystatechange
= showplusCallback;
xmlHttp.send();
}
function
showplusCallback () {
if
(xmlHttp.readyState == 4) {
if
(xmlHttp.status == 200) {
var
value = xmlHttp.responseText;
var
allPlus = value.split("|");
//
取得select
var
select = document.getElementById("plus");
//
先删除下拉列表中原有的内容
select.options.length
= 1; // 可以简写为 select.length
= 1;
for
(var i = 0; i < allPlus.length - 1; i++) {
//
取得id和title
var
id = allPlus[i].split(":")[0];
var
title = allPlus[i].split(":")[1];
//
创建一个<option>
var
option = document.createElement("option");
//
先赋值value
option.value
= id ;
//
创建option内的文本信息
var
text = document.createTextNode(title);
//
将text加入到option中
option.appendChild(text);
//
将 optioin 加入到select中
select.appendChild(option);
}
} else {
alert("出现错误:" + xmlHttp.status);
}
}
}
</script>
</head>
<body>
<center>
省份:<select
name="area" onchange="showplus(this.value);">
<option
value="0">-请选择省份-</option>
<c:if
test="${allArea != null}">
<c:forEach
var="area" items="${allArea}">
<option
value="${area.id}">${area.title }</option>
</c:forEach>
</c:if>
</select>
城市:<select
name="plus" id="plus">
<option
value="0">-请选择城市-</option>
</select>
</center>
</body>
</html>
<form action="" method="post" onsubmit="return checkform()">
用户ID: <input type="text" name="userid" id="userid" onblur="checkid(this.value);"/> <br/>
真实姓名: <input type="text" name="username" id="username"/> <br/>
密码: <input type="password" name="password" id="password"/> <br/>
<input type="submit" value="注册"/>
</form>
<script type="text/javascript">
var xmlHttp ;
function createXMLHttp() { // 判断浏览器类型
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest(); // FF的内核
} else {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // IE内核
}
}
function checkid(userid) {// 调用AJAX操作,固定的4个步骤
// 1:创建对象
createXMLHttp();
// 2:设置提交路径 xmlHttp.open("post","${pageContext.request.contextPath}/AjaxServlet?status=checkid&userid="+userid);
// 3:设置回调函数,使Servlet执行后可以自动调用某一个js方法
xmlHttp.onreadystatechange = checkidCallback ;
// 4:发送,提交
xmlHttp.send();
}
function checkidCallback() { // 判断当前状态,在回调函数中,一共执行了4次.
// 在核心对象中包含一个叫readyState的属性,该属性在执行AJAX的过程中会按照 1 - 4 值改变,当该值改变时,就会自动执行回调函数
// 按照以下情况进行改变
// 1:执行open方法时
// 2:执行到send方法时
// 3:执行到Servlet中的out.print时
// 4:执行到Servlet中的out.close时执行
if (xmlHttp.readyState == 4) {
// 还要判断是否正确执行,执行过程中是否出现了异常
if (xmlHttp.status == 200) {
// 接收Servlet的返回值
var value = xmlHttp.responseText ;
alert(value);
} else {
alert("执行过程中出现了异常,请与管理员联系:" + xmlHttp.readyState);
}
}
}
function checkform() {
return flag ;
}
</script>
public class AjaxServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String status = request.getParameter("status");
if ("checkid".equals(status)) {
// 接收参数
String userid = request.getParameter("userid");
// 调用服务
boolean flag = ServiceFactory.getUserServiceInstance().checkUserid(
userid);
// AJAX返回时,需要使用下面的out对象,通过out.print返回数据
response.setContentType("text/html");
PrintWriter out = response.getWriter();//注意,返回数据时,不能在out.print后加ln
out.print(flag);
out.close();
// 一定不要跳转
}
}
}
<a href="${pageContext.request.contextPath}/AjaxServlet?status=showArea">联动菜单</a>
public class AjaxServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String status = request.getParameter("status");
if ("checkid".equals(status)) { // 接收参数
String userid = request.getParameter("userid");// 调用服务
boolean flag = ServiceFactory.getUserServiceInstance().checkUserid( userid);
// AJAX返回时,需要使用下面的out对象,通过out.print返回数据
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print(flag);
out.close();// 一定不要跳转
} else if ("showArea".equals(status)) {
List<Area> allArea = null;
allArea = ServiceFactory.getAreaServiceInstance().findAllArea();
request.setAttribute("allArea", allArea);
request.getRequestDispatcher("/pages/front/area_list.jsp").forward(request, response);
} else if ("showplus".equals(status)) {
int upid = Integer.parseInt(request.getParameter("upid"));
List allPlus = ServiceFactory.getAreaServiceInstance().findByUpid(upid);
response.setContentType("text/html");
// 一定注意乱码处理
response.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
if (allPlus != null && allPlus.size() > 0) {
Iterator iter = allPlus.iterator();
while(iter.hasNext()) {
Areaplus plus = (Areaplus) iter.next();
out.print(plus.getId() + ":");
out.print(plus.getTitle() + "|");
}
}
out.close();
}
}
}
<html>
<head>
<title>联动菜单</title>
<script type="text/javascript">
var xmlHttp ;
function createXMLHttp() {
// 判断浏览器类型
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest(); // FF的内核
} else {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // IE内核
}
}
function showplus(upid) {
createXMLHttp(); xmlHttp.open("post","${pageContext.request.contextPath}/AjaxServlet?status=showplus&upid="+upid);
xmlHttp.onreadystatechange = showplusCallback;
xmlHttp.send();
}
function showplusCallback () {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var value = xmlHttp.responseText;
var allPlus = value.split("|");
// 取得select
var select = document.getElementById("plus");
// 先删除下拉列表中原有的内容
select.options.length = 1; // 可以简写为 select.length = 1;
for (var i = 0; i < allPlus.length - 1; i++) {
// 取得id和title
var id = allPlus[i].split(":")[0];
var title = allPlus[i].split(":")[1];
// 创建一个<option>
var option = document.createElement("option");
// 先赋值value
option.value = id ;
// 创建option内的文本信息
var text = document.createTextNode(title);
// 将text加入到option中
option.appendChild(text);
// 将 optioin 加入到select中
select.appendChild(option);
}
} else {
alert("出现错误:" + xmlHttp.status);
}
}
}
</script>
</head>
<body>
<center>
省份:<select name="area" onchange="showplus(this.value);">
<option value="0">-请选择省份-</option>
<c:if test="${allArea != null}">
<c:forEach var="area" items="${allArea}">
<option value="${area.id}">${area.title }</option>
</c:forEach>
</c:if>
</select>
城市:<select name="plus" id="plus">
<option value="0">-请选择城市-</option>
</select>
</center>
</body>
</html>
发表评论
文章已被作者锁定,不允许评论。
相关推荐
Ajax 简介和 Ajax API Ajax 简介 Ajax 是“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML)的缩写词,但事实上,Ajax 并非缩写词,而是由 Jesse James Gaiett 创造的名词。Ajax 是一种创建交互式...
**Ajax 简介** Ajax,全称为"Asynchronous JavaScript and XML",是一种在无需刷新整个网页的情况下,能够更新部分网页内容的技术。它并不是一项全新的技术,而是由一系列成熟的技术组合而成,包括JavaScript、DOM...
Ajax简介与基本使用 Ajax简介 Ajax即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。Ajax 是一种用于创建快速动态网页的技术。Ajax 是一种在无需...
主要内容有: Ajax简介以及工作原理, .net实现Ajax技术 Microsoft Ajax使用简介
**AJAX 简介** AJAX,全称为异步 JavaScript 和 XML,是2005年由Google引领的一种Web开发技术。它并不是一种全新的编程语言,而是利用现有的Web标准来构建更高效、更具交互性的网页应用。通过AJAX,开发者能够在...
在视频课程“Ajax与Atlas开发系列课程(1):AJAX简介与web2.0”中,苏鹏老师将深入浅出地讲解AJAX的基本概念、工作原理以及如何使用Atlas框架进行开发,帮助学员掌握AJAX技术在Web 2.0应用中的实践方法。通过观看该...
ajax简介,简单介绍1、什么是AJAX 2、AJAX的优势与不足 3、AJAX的关键技术
大家都知道ajax并非一种新的技术,而是几种原有技术的结合体。它由下列技术组合而成。
**WEB开发之AJAX简介** AJAX,全称为Asynchronous JavaScript and XML,即异步JavaScript和XML。这种技术允许Web开发者在不刷新整个页面的情况下,只更新网页的特定部分,从而提高了用户体验,使得网页交互更加流畅...
**Ajax 简介** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这种技术并非JavaScript的一种标准,而是由开发者创造的一个术语,用于描述一种利用...
本项目“用于Java应用程序的Ajax简介”就是一个使用NetBeans构建的示例项目,旨在帮助开发者快速理解和应用Ajax技术。** **在项目中,我们可能会看到以下关键组成部分:** 1. **HTML页面**:HTML文件是用户界面的...
### Ajax简介及核心技术解析 #### 一、引言 随着互联网技术的发展,用户对于Web应用的需求日益增长。从简单的信息浏览到复杂的交互式操作,Web技术也在不断进化以满足更高的用户体验标准。Ajax作为一项重要的Web...
**Ajax简介** Ajax,全称为Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。Ajax的核心是利用JavaScript与服务器进行异步数据交换,结合DOM...
Ajax简介学习的开始Ajax简介学习的开始Ajax简介学习的开始
Ajax(Asynchronous JavaScript and XML)技术是Web开发中的一种创新,它改变了传统的浏览器与服务器之间的交互方式,使得页面能够在不重新加载整个页面的情况下与服务器交换数据并局部更新内容。Ajax的核心在于利用...
### AJAX:将交互性和直观性带入Web应用 在当今数字化时代,Web应用程序与桌面应用程序并驾齐驱,各自在不同领域展现优势。然而,两者之间的功能与用户体验存在显著差异。桌面应用程序通常安装在本地计算机上,运行...
Ajax应用背景 二、Ajax概念 三、AJAX的处理流程 四、Ajax案例 五、演示 更丰富的“用户体验”,新的交互方式
**.Net Ajax 简介** .Net Ajax 是微软为实现 Web 2.0 应用程序而提供的技术框架,主要用于构建具有高度交互性和响应性的Web应用程序。它利用Ajax(Asynchronous JavaScript and XML)的核心概念,使得用户可以在不...
**AJAX(Asynchronous JavaScript and XML)** 是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。这一技术的核心在于JavaScript、XML以及浏览器提供的 XMLHttpRequest 对象。AJAX 的出现极大地提升了网页...
ajax简单技是个凡人暴风盾术及应用二房二公司的及其简单实例