`

入门级别的Ajax小例子

    博客分类:
  • JS
阅读更多

入门级别的AJAX小例子

实现方式:最原始的JS,Jquery

返回形式:字符串,XML

 

JSP页面:

<input type="text" name="user" id="username" size="20"/>
<input type="button" name="check" id="check" value="校验" onclick="verify()"/><br /><br />
<div id="result"></div>

 

1、返回类型是字符串的情况:

 

Servlet

public void doGet(HttpServletRequest request, HttpServletResponse response)
		  throws ServletException, IOException {
	this.doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
		   throws ServletException, IOException {
	response.setContentType("text/html;charset=utf-8");
	PrintWriter out = response.getWriter();
	String name = request.getParameter("name");
	if(name==null || name.length()==0){
		out.println("用户名不能为空!");
	}else {
		if(name.equals("admin")){
			out.println("用户名"+name+"已经存在,请选择其他的用户名进行注册!");
		}else{
			out.println("用户名"+name+"尚未存在,你可以使用该用户名");
		}
	}
	out.flush();
	out.close();
	}

 

使用最原始的JS方法进行请求:

var xmlHttp ;
function verify(){
	//通过dom方式获取文本框中的值
	var name = document.getElementById("username").value;
	//1、创建XMLHTTPRequest对象
	//针对IE和其他类型的浏览器建立这个对象的不同方式写代码
	if(window.XMLHttpRequest){ //针对于Firefox,Mozilalr,Opera,Safari,IE7,IE8
		 xmlHttp = new XMLHttpRequest();
		//针对某些特定版本的Mozillar浏览器的BUG进行修正
		if(xmlHttp.overrideMimeType){
			xmlHttp.overrideMimeType("text/xml");
		}
	}else if(window.ActiveXObject){
		//针对于IE6,IE5.5,IE5
		//两个可以用于创建XMLHttpRequest对象的挂件名称保存在一个加js的数据里,前面的版本较新
		var activexName =["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
		for(var i=0;i<activexName.length;i++){
			try{
				 xmlHttp = new ActiveXObject(activexName[i]);
				break;
			}catch(e){
				
			}
		}
	}
	
	if(!xmlHttp){
		alert("XMLHttpRequest创建失败!");
		alert(xmlHttp);
		return ;
	}
	
	//2、注册回调函数
	xmlHttp.onreadystatechange = callback;
/****************GET方式请求开始*********************************/
	//3、设置连接信息
	//第一个参数:http的请求方式,支持所有http的情切方式,主要使用get和post
	//第二个参数:请求的URL,get方式请求的参数也在url中,当需要传递很多参数时,可以在URL后面罗列
	//第三个参数:采用异步还是同步方式交互,true表示异步
	//xmlHttp.open("GET","AjaxTest?name="+name,true);
	
	//4、发送数据,开始跟服务器进行交互
	//同步方式下,send这句话会在服务器端数据回来之后执行
	//异步方式下,send这句话会立即完成执行
	//xmlHttp.send(null);
/****************GET方式请求结束*********************************/

/****************POST方式请求开始*********************************/
	//POST方式请求数据
	xmlHttp.open("POST","AjaxTest",true);
	//设置http的请求头
	xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	//发送数据:POST方式传递多个参数时,如果使用多个send方法进行传递是不起作用的,可以借鉴于get方法,将需要传递的参数在send方法后面罗列,如xmlHttp.send(“name=” +name+”&sex=”+sex+”&age=”+age)
	xmlHttp.send("name="+name);//所有的参数都通过这个方法传给服务器
/****************POST方式请求结束*********************************/
	
}

//回调函数:处理返回的结果
function callback(){
	//判断对象的状态是交互完成
	if(xmlHttp.readyState==4){
		//判断http的交互是否成功
		if(xmlHttp.status == 200){
			//获取服务器端返回的数据
			//获取服务器端输出的纯文本数据
			var responseText = xmlHttp.responseText;
			//将数据显示在页面上
			document.getElementById("result").innerHTML = responseText;
			//document.getElementById("username").value=" ";
		}
	}
}

 

使用Jquery的GET方法进行请求(POST方法类似):

function verify(){
	//1.获取文本框中的内容
	//dom方式:name=document.getElementById("username");
	//jquery查找节点的方式
	var name = $("#username").val();
	alert("获取到的数据为:"+name);
	//2、将文本框中的数据发送给服务器的servlet
	//使用jquery的XMLHTTPRequest对象get请求的封装
	//第一个参数表示要连接的URL,
	//第二个为传过去的数据,此处因为在第一个参数中已经带了数据,所以第二个就不要传参了
	//第三个是回调函数,data从服务器返回的数据
	$.get("AjaxTest?name="+name,null,function(data){
		$("#result").html(data);
		
	});
}

//回调函数,相当于上面的function(data),这个是把回调函数独立成了一个方法。
function callback(data){
	alert("回调函数!");
	//3、接收服务器返回的数据
	alert("返回的数据是:"+data);
	//4、将服务器返回的数据动态的显示到jsp页面中
	$("#result").html(data);
}

 

 2、返回形式是XML的情况:

 

Servlet:

public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	this.doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	//response.setContentType("text/html;charset=utf-8");
	//修改点1:修改相应的content-type必须是text/xml格式的
	response.setContentType("text/xml;charset=utf-8");
		
	PrintWriter out = response.getWriter();
	String name = request.getParameter("name");
		
	//修改点2:返回的数据必须拼接成xml格式的
	StringBuffer builder = new StringBuffer();
	builder.append("<message>");
	if(name==null || name.length()==0){
		builder.append("用户名不能为空").append("</message>");
	}else {
		if(name.equals("admin")){
			builder.append("用户名["+name+"]已经存在,请选择其他的用户名进行注册!").append("</message>");
		}else{
			builder.append("用户名["+name+"]尚未存在,你可以使用该用户名").append("</message>");
		}
	}
	out.println(builder.toString());
	out.flush();
	out.close();
	}

 

原始JS的Ajax请求跟字符串的类似,就是回调函数不一样,也就是处理方式不一样。

// 回调函数
function callback() {
// 判断对象的状态是交互完成
	if (xmlHttp.readyState == 4) {
		// 判断http的交互是否成功
		if (xmlHttp.status == 200) {
			// 使用responseXML的方式来接收XML数据对象的DOM对象
			var responseXml = xmlHttp.responseXML;
			if(responseXml!=null){
				// 获取根元素节点:使用dom中的getElementsByTagName根据标签名来获取元素节点,返回的是一个数组
				var messageNodes = responseXml.getElementsByTagName("message");
				if(messageNodes.length!=0){
					// message标签中的文本在dom中是message标签所在的元素节点的子节点,通过firstChild方法获取它的第一个子节点
					// 通过以下方式可以获取到文本内容所对应的节点
					var textNode = messageNodes[0].firstChild;

					// 对于文本节点,可以通过nodeValue的方式返回文本节点的文本内容
					var c = textNode.nodeValue;

					// 将数据显示在页面上
					document.getElementById("result").innerHTML = responseMessage;
					// document.getElementById("username").value=" ";
				}else{
					alert("XML数据格式错误,原始文本为:"+xmlHttp.responseText);
				}
				
			}else{
				alert("XML数据格式错误,原始文本为:"+xmlHttp.responseText);
			}
		}
	}
}

 

Jquery的POST方法进行处理:

Ajax:
$.ajax({
	type:"POST",		//请求方式
	url:"AjaxTestXML", 	//请求路径
	data:"name="+name,  //传递给服务器的数据
	dataType:"xml",		//告诉jquery返回的数据格式
	success:callback	//定义交互完成,并且服务器正确返回数据时调用的回调函数
	});
//回调函数,相当于上面的function(data)
function callback(data){
//	alert("回调函数!");
	//3、接收服务器返回的数据
//	alert("返回的数据是:"+data);
		
	//因为是xml格式的数据,需要将data这个dom对象中的数据解析出来
	//首先需要将dom对象转换成jquery对象
	var jqueryObj = $(data);
	
	//获取message节点
	var message = jqueryObj.children();
	//获取message中的文本信息
	var text = message.text();
	
	//4、将服务器返回的数据动态的显示到jsp页面中
	//$("#result").html(data);
	$("#result").html(text);
}

 这个例子是最简单的,却不是最好的解决方法。随着Jquery的越来越牛X,把Ajax包装的越来越好,Ajax的请求和处理也越来越简单,越来越丰富化。当然咱们要学的也就越多了!哎,祝咱们好运吧!

分享到:
评论

相关推荐

    ajax的DWR框架入门例子

    在这个"ajax的DWR框架入门例子"中,我们将深入理解DWR如何工作以及如何在实际项目中应用。这个例子包含了源代码和调试成功的案例,这意味着我们可以直接运行和学习,而无需从零开始搭建环境。 首先,DWR的基本概念...

    AJAX简单实例--入门级小例

    在这个例子中,我们向'data.txt'发送了一个GET请求,并在接收到响应后将其打印到控制台。 ### 4. 多浏览器支持 由于早期不同浏览器对XMLHttpRequest的实现存在差异,为了确保兼容性,可以使用`try...catch`语句或...

    AJAX入门

    **AJAX 简单例子** 创建一个简单的AJAX请求通常涉及以下几个步骤: 1. 创建XMLHttpRequest对象。在Mozilla、Firefox、Safari、Netscape和IE7中,可以通过`new XMLHttpRequest()`来创建;而在Internet Explorer 5.5、...

    AJAX验证用户名的实例

    总之,"AJAX验证用户名的实例"是一个实用的入门项目,它涵盖了AJAX的基础知识,包括请求的发送、数据的接收和UI的更新。对于想要学习AJAX的初学者,这是一个很好的起点,可以帮助他们逐步掌握这种强大的Web开发技术...

    ZK(AJAX开发工具)开发手册

    - 通过这个简单的例子,开发者可以快速了解ZK的基本用法,如如何定义页面、添加组件等。 ##### 交互性 - ZK通过AJAX技术实现了网页元素的动态交互。 - 开发者可以通过简单的脚本代码实现复杂的用户交互效果。 ####...

    Google Maps与Ajax在Java Web集成地图信息

    10. **学习路径**:对于初学者,这个小系列的文章提供了快速入门 Google Maps API 和 Ajax 的指南,帮助开发者快速创建具有交互式地图功能的 Java Web 应用程序。 通过这些知识点,开发者可以了解如何在 Java Web ...

    ASP.NET v2.0 入门50例源码

    10. **AJAX支持**:尽管ASP.NET 2.0本身并不包含完整的AJAX框架,但它引入了UpdatePanel等组件,使部分页面更新成为可能,为后来的ASP.NET AJAX提供基础。 压缩包内的"nettest"可能是项目文件夹的名字,通常会包含...

    从入门到精通(PHP)

    “从入门到精通”这本书应该涵盖了这些基础知识和高级主题,通过阅读并实践书中的例子,你可以逐步掌握PHP编程。此外,还可以利用在线教程、论坛(如Stack Overflow)和开源项目来深入学习和提升PHP技能。记得理论与...

    Spring_Web_Flow_2[1].0_入门.pdf

    ### Spring Web Flow 2.0 入门指南 #### 一、Spring Web Flow 简介 Spring Web Flow 是 Spring 框架的一个子项目,主要用于处理 Web 应用程序中的流程控制。它解决了跨多个请求的用户与服务器之间有状态交互的问题...

    JavaScript王者归来part.1 总数2

     12.2.2 DOM的级别和特性   12.2.3 DOM的一致性   12.2.4 差异性--浏览器的DOM方言   12.3 一组“盒子”--DOM元素   12.3.1 嵌套的“盒子”   12.3.2 “盒子”和“盒子”内容的分类   12.4 创建和删除...

    dwr 案例 源码

    4. **FirstDWRDemo**:这是一个入门级别的示例,可能包含了使用DWR创建的第一个Ajax功能。通常,它会演示一个简单的场景,如从服务器获取数据并在不刷新页面的情况下更新页面的一部分。这个例子对于初学者来说非常有...

    Ext.js 6 示例学习

    它提供了丰富的用户界面组件和数据绑定机制,使得开发者可以构建出具有桌面应用级别的交互式网页应用。本压缩包包含两个PDF文档,分别是“Ext.JS6ByExample.pdf”和“Ext.JS6学习文档.pdf”,都是针对Ext.js 6版本的...

    jQuery 基础教程

    1. **jQuery入门与ready函数** jQuery的`$(document).ready()`函数是jQuery程序的起点,它确保在DOM完全加载后执行代码,避免了由于元素未加载完成而导致的错误。`ready`函数可以绑定一个或多个函数,当DOM准备就绪...

    padawan9002.github.io:这个不起眼的例子是试图展示我们可用的力量的一小部分

    在描述中,再次强调了这个例子只是"我们可用的力量的一小部分",这表明背后的代码和技术可能非常先进,而这个项目仅仅是一个入门或者示例级别的应用。开发者可能想通过这个项目向用户或者社区展示JavaScript的广阔...

    jQuery权威指南-源代码

    除此之外,本书还包括大量的实例,不仅每个知识点都配有小例子,而且还有两个综合性的案例。对于初学者而言,本书应该是学习jQuery的首选。——jQuery中文用户组 jQuery因为易于使用和功能强大著称,是所有Web开发者...

    DWR中文文档

    #### 二、DWR入门 1. **安装和配置** - **将DWR放入你的工程**:通常需要将DWR的库文件添加到项目的类路径中。 - **编辑配置文件**:需要修改`web.xml`文件,添加DWR的相关配置。 - **编写service**:创建一个...

    PHP和MySQL WEB开发(第4版)

    5.3.3 理解字母大小写和函数名称 5.4 理解为什么要定义自己的函数 5.5 了解基本的函数结构 5.5.1 函数命名 5.6 使用参数 5.7 理解作用域 5.8 参数的引用传递和值传递 5.9 使用Return关键字 5.9.1 从函数返回一个值 ...

    PHP和MySQL Web开发第4版pdf以及源码

    5.3.3 理解字母大小写和函数名称 5.4 理解为什么要定义自己的函数 5.5 了解基本的函数结构 5.5.1 函数命名 5.6 使用参数 5.7 理解作用域 5.8 参数的引用传递和值传递 5.9 使用Return关键字 5.9.1 从函数返回...

    PHP和MySQL Web开发第4版

    5.3.3 理解字母大小写和函数名称 5.4 理解为什么要定义自己的函数 5.5 了解基本的函数结构 5.5.1 函数命名 5.6 使用参数 5.7 理解作用域 5.8 参数的引用传递和值传递 5.9 使用Return关键字 5.9.1 从函数返回...

Global site tag (gtag.js) - Google Analytics