今天第一次接触Ajax,在没有接触Ajax之前感觉Ajax是个特别神秘且难学的大框架,可是一接触才知道,Ajax也不过如此嘛,对于我这么一个做后台的程序员来说,不需要往深研究Ajax,只需知道他的大致轮廓就可以了,Ajax的核心类是XMLHttpRequest。因为Ajax是客户端技术,所以不同客户端的浏览器对Ajax有不同的实现,下面我就分别对IE内核的浏览器和firefox内核的浏览器实现做一个比较,他们的区别不是很大,只是在创建XMLHttpRequest对象时,有小许的不同。在写代码之前,我有必要介绍一下,Ajax并不是一门语言,而是一门技术,他是在JavaScript语言支持的基础上写的Script。
下面我以一个小例子来说明一下Ajax的大致工作流程:
解释:当我输入完邮编后,焦点离开该文本框后,省份和城市将直接显示在下面的文本框中。
index.jsp文件内容如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script>
//向服务器端发送请求,并且解析接收到响应报文(Ajax)
/*1.获取并创建XMLHttpRequest*/
//声明XMLHttpRequest
var xhr;
function getZip(){
//创建XMLHttpRequest对象
//IE内核的浏览器(Mathon、IE)
if(window.ActiveXObject){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
//其他内核的浏览器(Firefox、NetScape)
else if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
else{
alert("该浏览器不支持Ajax");
}
/*2.确定请求报文的基本内容(提交请求的方式、URI)*/
//请求报文提交请求的方式
var method = "GET";
//要访问的web资源的uri
var zipcode = document.getElementById("zipCode").value;
var uri = "zipServlet?zipcode="+zipcode;
//确认通信的方式
//type:表示客户端与服务器端的通信方式,true为异步方式,false为同步方式,默认为异步方式
var type = true;
/*3.与要请求的web资源所在的服务器建立连接*/
xhr.open(method,uri,type);
/*4.设置回调函数,监听通信过程*/
xhr.onreadystatechange = callback;
/*5.向服务器端发送请求*/
//提交请求的方式为GET,或者提交请求的方式为Post但不需要传递参数
xhr.send(null);
}
//回调函数,写处理响应的代码
function callback(){
//alert(xhr.readyState);
//判断是否获取到了完整响应报文
if(xhr.readyState==4){
//判断响应状态码,查看请求是否成功
if(xhr.status==200){
//获取响应报文中的内容
var message = xhr.responseText;//辽宁@沈阳
//拆分字符串
var info = message.split("@");//{辽宁,沈阳}
//将内容填充到文本框
document.getElementById("city").value = info[0];
document.getElementById("province").value = info[1];
}
}
}
</script>
</head>
<body>
<center>
输入地区数据<br/>
邮编:<input type="text" id="zipCode" onblur="getZip()"/><br/>
省份:<input type="text" id="province"/><br/>
城市:<input type="text" id="city"/><br/>
</center>
</body>
</html>
web.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>ZipServlet</servlet-name>
<servlet-class>ZipServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ZipServlet</servlet-name>
<url-pattern>/zipServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
ZipServlet文件内容如下:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ZipServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取客户端的传递参数
String zipCode = request.getParameter("zipcode");
//根据邮政编码获取省份和城市
Map<String,String> map = new HashMap<String,String>();
map.put("110000", "辽宁@沈阳");
map.put("111000", "辽宁@辽阳");
map.put("114000", "辽宁@鞍山");
String message = map.get(zipCode);//辽宁@沈阳
//生成响应信息
response.setCharacterEncoding("utf-8");//如果此种方法出现问题可以使用response.setContextType("text/html;charset=UTF-8") ;
PrintWriter out = response.getWriter();
out.write(message);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
完毕,试试吧,有什么问题可以留言。
分享到:
相关推荐
AJAX 综合 快速能学懂AJAX AJAX 综合 快速能学懂AJAX AJAX 综合 快速能学懂AJAX AJAX 综合 快速能学懂AJAX AJAX 综合 快速能学懂AJAX AJAX 综合 快速能学懂AJAX AJAX 综合 快速能学懂AJAX AJAX 综合 快速能学懂AJAX ...
简单易懂,快速了解AJAX,没有繁琐的定义,没有庞大的代码,只有浅显易懂的说明,新手必备!
本压缩包中的"asp.net ajax帮助文档"包含了对ASP.NET AJAX框架的深入讲解,涵盖了从基础到高级的各种主题,适合于初学者和有经验的开发者。文档中可能包含以下关键知识点: 1. **AJAX基础知识**:解释了AJAX的基本...
- **浏览器兼容性**:不同的浏览器对Ajax的支持程度不同,需要考虑兼容性问题。 - **同源策略**:出于安全原因,Ajax请求通常受到同源策略限制,只能向同一域名下的服务器发送请求。 - **防止阻塞UI**:由于Ajax...
本教程以"Ajax快速入门10个经典例子(带数据库文件)"为主题,旨在帮助初学者快速掌握Ajax的核心概念和应用。 1. **Ajax基础概念** - 异步性:Ajax的核心特性,允许页面在不刷新的情况下与服务器通信。 - ...
本教程将针对初学者,详细介绍Ajax的基础知识、工作原理以及实际应用,帮助你快速上手。 **一、Ajax基础** 1. **概念理解**:Ajax并不是一种单一的技术,而是一种使用现有技术(如JavaScript、XML、HTML、CSS等)...
很不错的Ajax开发草考文档,方便快捷1. AJAX介绍AJAX是一种运用JavaScript和可扩展标记语言(XML),在网络浏览器和服务器之间传送或接受...5. 使用AJAX制作留言本使用已有的AJAX教程,制作一个属于自己的留言本吧....
通过这份Ajax中文手册,开发者可以快速了解和掌握Ajax技术,从而提升Web应用的交互性和效率。手册中的实例和代码片段将帮助读者更好地理解和应用这些概念,从而在实际项目中实现高效的数据通信和页面更新。
AJAX AJAX AJAX AJAX AJAX AJAX AJAX AJAX AJAX
7. **Ajax的局限性**:尽管Ajax提高了用户体验,但它也有一些局限,比如不能被浏览器的前进/后退按钮管理,不利于搜索引擎优化,以及在不支持JavaScript的环境中无法运行。 8. **现代Ajax框架**:随着Web开发的复杂...
在信息技术快速发展的今天,Web开发人员正面临着如何提高网站性能和用户体验的挑战。...通过本书,希望能够帮助更多的Web开发人员从Ajax入门到精通,从而在快速变化的Web技术领域中始终保持竞争力。
AjaxTools是针对后台开发者的一款实用工具,通过其丰富的功能和简洁的API,可以帮助开发者快速实现AJAX交互,提高开发效率。无论是在小型项目还是大型应用中,它都能够有效地简化异步数据处理的过程,让开发者更专注...
本书系统介绍ASP.NET Ajax程序设计知识,共3卷。本卷从最易于理解和使用的那部分入手,介绍ASP.NET AJAX框架中能够与传统ASP.NET无缝... 本卷适合对ASP.NET AJAX有兴趣,并希望对其有更进一步了解的Web开发人员阅读。
同时,随着Web服务和单页应用(SPA)的普及,Ajax技术的应用越来越广泛,如React、Vue.js、Angular等现代前端框架都内置了对Ajax的优化支持,简化了开发者的工作。 总结来说,Ajax是现代Web开发不可或缺的一部分,...
"深入浅出Ajax"这本书通过丰富的实例和源码,旨在帮助读者理解Ajax的核心原理并学会在实际项目中应用。通过阅读和研究这些源码,不仅可以深化理论知识,还能提高实际编程能力,为成为精通Ajax的开发者打下坚实基础。
**Ajax Interceptor:深入理解与应用** Ajax Interceptor 是一款专为谷歌浏览器(Chrome)设计的插件,它允许...同时,了解其背后的技术原理,如AJAX、Chrome扩展机制以及JavaScript,将有助于提升整体的前端技能。
在“四天学会Ajax 快速上手”的课程中,你将了解到以下关键知识点: 1. **XMLHttpRequest对象**:这是Ajax的基础,用于在后台与服务器进行通信。通过这个对象,你可以发送HTTP请求并接收响应,而不会中断用户的界面...
总的来说,"JS+AJAX+CSS中文帮助文档和示例"是一个全面的参考资料集合,无论是对初学者还是有一定经验的开发者,都能从中获益。通过深入学习和实践,你将能够构建出更具互动性和用户体验的现代网页。
查了很多资料都说,get方法的参数是有限制的,post方法的参数的长度是无限制,这也是post相比get的优势一直。 在ajax中使用post方法,用常规的参数格式:param1=a1¶m2=a2 ,当参数长度过长时,依然提交不成功。...
这些示例对于理解Ajax的工作原理和实际应用非常有帮助。 在实际应用中,我们还会涉及到跨域问题、错误处理、性能优化等方面。例如,使用JSON替代XML作为传输数据格式,因为JSON更轻量且易于处理;利用缓存机制减少...