`

初遇ajax(对快速了解ajax有帮助)

    博客分类:
  • ajax
阅读更多

今天第一次接触Ajax,在没有接触Ajax之前感觉Ajax是个特别神秘且难学的大框架,可是一接触才知道,Ajax也不过如此嘛,对于我这么一个做后台的程序员来说,不需要往深研究Ajax,只需知道他的大致轮廓就可以了,Ajax的核心类是XMLHttpRequest。因为Ajax是客户端技术,所以不同客户端的浏览器对Ajax有不同的实现,下面我就分别对IE内核的浏览器和firefox内核的浏览器实现做一个比较,他们的区别不是很大,只是在创建XMLHttpRequest对象时,有小许的不同。在写代码之前,我有必要介绍一下,Ajax并不是一门语言,而是一门技术,他是在JavaScript语言支持的基础上写的Script。

下面我以一个小例子来说明一下Ajax的大致工作流程:

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);
	}

}

 完毕,试试吧,有什么问题可以留言。

 

 

0
0
分享到:
评论

相关推荐

    AJAX 快速运用 快速能学懂AJAX

    AJAX 综合 快速能学懂AJAX 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从入门到精通.pdf

    1. Ajax 概述:本书首先介绍了 Ajax 的概念、定义、历史背景和发展前景,帮助读者快速了解 Ajax 的基本概念和技术架构。 2. Ajax 的核心技术:Book 介绍了 Ajax 的核心技术,包括 HTML、JavaScript、DHTML 和 DOM,...

    Ajax中文帮助文档

    - **浏览器兼容性**:不同的浏览器对Ajax的支持程度不同,需要考虑兼容性问题。 - **同源策略**:出于安全原因,Ajax请求通常受到同源策略限制,只能向同一域名下的服务器发送请求。 - **防止阻塞UI**:由于Ajax...

    Ajax快速入门

    本教程以"Ajax快速入门10个经典例子(带数据库文件)"为主题,旨在帮助初学者快速掌握Ajax的核心概念和应用。 1. **Ajax基础概念** - 异步性:Ajax的核心特性,允许页面在不刷新的情况下与服务器通信。 - ...

    ajax新手快速入门

    本教程将针对初学者,详细介绍Ajax的基础知识、工作原理以及实际应用,帮助你快速上手。 **一、Ajax基础** 1. **概念理解**:Ajax并不是一种单一的技术,而是一种使用现有技术(如JavaScript、XML、HTML、CSS等)...

    Ajax中文手册 API

    很不错的Ajax开发草考文档,方便快捷1. AJAX介绍AJAX是一种运用JavaScript和可扩展标记语言(XML),在网络浏览器和服务器之间传送或接受...5. 使用AJAX制作留言本使用已有的AJAX教程,制作一个属于自己的留言本吧....

    Ajax中文手册(快速上手)

    通过这份Ajax中文手册,开发者可以快速了解和掌握Ajax技术,从而提升Web应用的交互性和效率。手册中的实例和代码片段将帮助读者更好地理解和应用这些概念,从而在实际项目中实现高效的数据通信和页面更新。

    AJAX AJAX AJAX AJAX AJAX AJAX AJAX AJAX AJAX

    AJAX AJAX AJAX AJAX AJAX AJAX AJAX AJAX AJAX

    最精典的ajax打包.让你快速了解ajax

    7. **Ajax的局限性**:尽管Ajax提高了用户体验,但它也有一些局限,比如不能被浏览器的前进/后退按钮管理,不利于搜索引擎优化,以及在不支持JavaScript的环境中无法运行。 8. **现代Ajax框架**:随着Web开发的复杂...

    AjaxTools适用于后台快速开发ajax的小工具

    AjaxTools是针对后台开发者的一款实用工具,通过其丰富的功能和简洁的API,可以帮助开发者快速实现AJAX交互,提高开发效率。无论是在小型项目还是大型应用中,它都能够有效地简化异步数据处理的过程,让开发者更专注...

    ASP.NET AJAX程序设计——第I卷:服务器端ASP.NET 2.0 AJAX Extensions与ASP.NET AJAX Control Toolkit 源代码

    本书系统介绍ASP.NET Ajax程序设计知识,共3卷。本卷从最易于理解和使用的那部分入手,介绍ASP.NET AJAX框架中能够与传统ASP.NET无缝... 本卷适合对ASP.NET AJAX有兴趣,并希望对其有更进一步了解的Web开发人员阅读。

    Ajax开发简略,快速了解Ajax的来哦

    同时,随着Web服务和单页应用(SPA)的普及,Ajax技术的应用越来越广泛,如React、Vue.js、Angular等现代前端框架都内置了对Ajax的优化支持,简化了开发者的工作。 总结来说,Ajax是现代Web开发不可或缺的一部分,...

    深入浅出Ajax(Head Rush Ajax) 源码 书中代码

    "深入浅出Ajax"这本书通过丰富的实例和源码,旨在帮助读者理解Ajax的核心原理并学会在实际项目中应用。通过阅读和研究这些源码,不仅可以深化理论知识,还能提高实际编程能力,为成为精通Ajax的开发者打下坚实基础。

    谷歌浏览器插件—— Ajax Interceptor

    **Ajax Interceptor:深入理解与应用** Ajax Interceptor 是一款专为谷歌浏览器(Chrome)设计的插件,它允许...同时,了解其背后的技术原理,如AJAX、Chrome扩展机制以及JavaScript,将有助于提升整体的前端技能。

    四天学会ajax 快速上手

    在“四天学会Ajax 快速上手”的课程中,你将了解到以下关键知识点: 1. **XMLHttpRequest对象**:这是Ajax的基础,用于在后台与服务器进行通信。通过这个对象,你可以发送HTTP请求并接收响应,而不会中断用户的界面...

    JS+AJAX+CSS中文帮助文档和示例

    总的来说,"JS+AJAX+CSS中文帮助文档和示例"是一个全面的参考资料集合,无论是对初学者还是有一定经验的开发者,都能从中获益。通过深入学习和实践,你将能够构建出更具互动性和用户体验的现代网页。

    ajax快速解决参数过长无法提交成功的问题

    查了很多资料都说,get方法的参数是有限制的,post方法的参数的长度是无限制,这也是post相比get的优势一直。 在ajax中使用post方法,用常规的参数格式:param1=a1&param2=a2 ,当参数长度过长时,依然提交不成功。...

    ajax代码 ajax代码

    这些示例对于理解Ajax的工作原理和实际应用非常有帮助。 在实际应用中,我们还会涉及到跨域问题、错误处理、性能优化等方面。例如,使用JSON替代XML作为传输数据格式,因为JSON更轻量且易于处理;利用缓存机制减少...

Global site tag (gtag.js) - Google Analytics