`
TiFa.L.Hart
  • 浏览: 16734 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

原生javascript---Ajax

阅读更多
  比较懒,由于这个都是之前自己做的,网上这些东西多的数不胜数,但是下面是我自学后直接将总结写在了jsp里面,所以注释比真正的代码还多,里面包含了web缓存问题和乱码问题解决,这是怕我自己会以后忘记。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
 
    
    <title>javascript中Ajax应用例子</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">
	


	<script type="text/javascript">



	/* ---------------------------------------------------------------
	  AJAX技术     --->  XMLHttpRequest的使用步骤:
		1.建立XMLHttpRequest对象     -->由于不同浏览器不同,因此要针对不同浏览器而对XMLHttpRequest做不同的实例化方式
		2.注册回调方法
		3.使用open()方法设置和服务器端交互的基本信息,如:交互方法(GET/POST)、服务器地址、是否异步调度
		4.设置发送的数据,开始和服务器端交互
		5.在回调方法<在第2步中已注册>中判断交互是否结束(xmlhttp.readyState == 4),相应是否正确(xmlhttp.status == 200),并获取从服务器中返回的数据


		另外,XMLHttpRequest对象的状态(即:readyState的值): 
		<其中可以用abort()方法停止当前http请求,对应的XMLHttpRequest对象会恢复到未初始化状态>
		<请求期间,可以用onreadystatechange监听状态的变化,并调用javascript函数进行处理,详细见以下第2步>
		<****第2步中注册的回调方法,实质上在以下各个状态改变的时候都会被调用****>
			0 :未初始化状态,对象以创建,为调用open方法
			1:open方法调用成功后,send方法未被调用
			2:send方法已调用,尚未开始接受数据
			3:正在接收数据,http响应头信息已接收,但未接收完响应数据
			4:已接收完响应数据



		获取响应数据的方法:
			responseText :服务器响应的文本
			responseXML : 服务器响应的XML内容的DOM对象  (详细使用见下面代码)
		
		
		响应状态(status):
			200 : 成功
			404 :未找到
			500 : 服务器内部错误




		
			web 请求中缓存问题:
			描述:由于请求中有些url前后请求的url内容都一致,导致某些浏览器会只访问浏览器的缓存而不访问服务器,导致访问的结果没有变,
			但是某些web应用虽然前后不同时间里的请求url都一样,但访问服务器后的结果会不一样,如: 获取验证码等,所以为了防止此问题出现
			可以在请求url中添加如下javascript代码:
				简单方式:	"serviceUrl?t=" + (new Date()).valueOf();    	<此处的“t=" + (new Date()).valueOf();”是为了防止浏览器只访问缓存而不访问服务器才添加的一个时间戳>
				url地址不确定方式:
							var url = serviceUrl;
							if(url.indexOf("?") >= 0){
								url = url + "&t=" + (new Date()).valueOf();
							}else{
								url = url + "?t=" + (new Date()).valueOf();
							}





			中文乱码问题:
			描述:由于各种设置不正确或者浏览器本身问题,导致页面显示中文导致乱码。
			解决方法:
				1.寻找根源,修正问题.如:页面和服务器所用的字符集是否一致、部署的服务器或容器对字符集设置(如Tomcat)
				2.利用javascript和java的配合强悍的去除乱码:
					页面端(注:这是javascript代码,所用的函数也是javascript的函数):
						var name = document.getElementById("uName");
			---->>      name = encodeURI(encodeURI(name));


					服务器端(注:这里使用的是java中URLDecoder类中的方法):
						String oldName = request.getParameter("name");
			---->>		String newName = URLDecoder.decode(oldName,"utf-8"); 			 
	
	
	
	
	
	
	--------------------------------------------------------------------*/
	











	
		var	xmlhttp;  //XMLHttpRequest对象
		function myFun(){
//********************1.创建XMLHttpRequest对象
			if(window.XMLHttpRequest){
				//IE7+,Firefox,Mozillar,Opera等浏览器支持
				xmlhttp = new XMLHttpRequest();
			
				if(xmlhttp.overrideMimeType){  //这是为了防止有些浏览器发送过来的文件头中没有mimetype时会导致无法工作
					xmlhttp.overrideMimeType("text/xml");
				}
			}else if(window.ActiveXObject){
				//IE5+都有这个对象,以下是各个IE版本支持的XMLHTTPRequest对象 
				var activexName = ["MSXML2.XMLHTTP","Miscrosoft.XMLHTTP"];
                for(var i=0; i<activexName.length; i++){
                    try{
                        xmlhttp = new ActiveXObject(activexName[i]);
                        break;
                    }catch(e){
                    }
                }
			}
			//验证xmlhtp是否创建成功
			if(xmlhttp == undefined || xmlhttp == null){
				alert("当前浏览器不支持XMLHttpRequest对象,请更换浏览器");
				return;
			}
//******************2.注册回调方法
			xmlhttp.onreadystatechange = callback;  //callback是回调方法名

			//记忆一个固定用法,获取文本框中用户输入的内容
			var userName = document.getElementById("uName").value;

//******************3.设置和服务器端交互的相应参数,
				/*
				open方法参数:
				第一个:获取方式(GET/POST),
				第二个:服务器地址,
				第三个:表示是否使用异步的方式进行交互,若为false则采用同步方式交互
				第四个:username、第五个:password   <这两个为可选参数,当提供http认证机制需要时需要用户名和密码>
				*/
		//	xmlhttp.open("GET","ajaxTest1?name="+userName,true); 	//GET方法获取
		 	xmlhttp.open("POST","ajaxTest1",true);
			xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  //当使用POST时才需要这句话,刚方法必须在open方法后面调用,不然会抛异常

			//4.设置向服务器端发送的数据,启动和服务器端的交互
		//	xmlhttp.send(null); //由于上面采用GET方法发送,在这里send方法里不需要填充数据,如果是POST方式就要在此方法内填充数据
			xmlhttp.send("name="+userName);
		}

		//回调方法
		function callback(){
			//5.判断和服务器端的交互是否完成,还要判断服务器端是否正确返回了数据
	
			if(xmlhttp.readyState == 4){//表示和服务器端的交互已完成
				if(xmlhttp.status == 200){ //表示服务器端的响应代码是200,正确的返回了数据
					//纯文本数据的接受方法
					var message = xmlhttp.responseText;

					//XML数据对应的DOM对象的接受方法
					//使用前提是服务器端要设置content-type为"text/xml"
//					var domxml = xmlhttp.responseXML;
					
					
					//显示结果数据
					var m = document.getElementById("msg");
					
					m.innerHTML = message;
				}
			}
		}

			
                        
                
	
	</script>

  </head>
  
  <body>
   <input type="text" name="name" id="uName" /><input type="submit" onclick="myFun()" value="检验"/>
   <div id="msg"></div>
  </body>
</html>




分享到:
评论
1 楼 x734545751k 2011-10-12  
留个脚印先

相关推荐

    JavaScript案例-原生ajax

    "JavaScript案例-原生ajax"这个主题聚焦于如何不依赖任何库或框架,仅用JavaScript原生API实现Ajax通信。 Ajax的核心在于XMLHttpRequest对象,它允许我们在不刷新整个页面的情况下发送HTTP请求并接收响应。以下是...

    原生javascript实现ajax 发送post请求

    原生javascript实现ajax发送pos请求,这样可以脱离jquery框架,

    JavaScript案例-原生ajax查询所有用户

    下面我们将详细探讨原生JavaScript实现AJAX的基本步骤和相关知识点。 1. 创建XMLHttpRequest对象: 在JavaScript中,我们首先需要创建一个XMLHttpRequest对象,它是AJAX的核心。所有与服务器的通信都是通过这个...

    Ajax-ajax-.zip

    Ajax-ajax-.zip,一、获得职位,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的情况下更改。

    前端-JavaScript-ajax (axios、 promise、git...)

    ajax--ajax原生写法。axios发送请求。promise概念。git版本管理器使用。具体:请求与相应、浏览器和服务器、接口、回调函数、事件循环、宏任务与微任务、form表单提交、serialize插件、JSON、async,await、git仓库...

    基于原生javascript封装的Ajax插件含Node测试接口

    **原生JavaScript实现Ajax** 原生JavaScript实现Ajax涉及到以下几个关键步骤: 1. **创建XMLHttpRequest对象**:在所有现代浏览器中,都可以通过`new XMLHttpRequest()`创建一个XMLHttpRequest实例。 2. **初始化...

    artech-javascript-jquery-15

    9. **jQuery与原生JS对比**:对比jQuery与原生JavaScript在实现相同功能时的代码差异和效率问题。 10. **实战应用**:可能包含一个或多个实际项目案例,展示如何在实际开发中应用这些jQuery知识。 这个15节的课程...

    javascript--texiao-343.zip_javascript

    10. **jQuery库**:虽然现代JavaScript已经提供了原生API解决大部分需求,但jQuery仍然是许多特效实现的常用工具,它简化了DOM操作和事件绑定,使代码更简洁。 11. **框架与库**:React、Vue、Angular等前端框架...

    原生js-2018-06031912.pdf

    jQuery是一个广泛使用的JavaScript库,简化了DOM操作、事件处理、动画和Ajax交互。尽管现代JavaScript有许多内置功能可以替代jQuery,但在老项目中,jQuery仍然是一个重要的工具。 通过以上各个方面的学习,开发者...

    artech-javascript-jquery-12

    5. **jQuery与JavaScript原生API的结合**:虽然jQuery简化了很多操作,但有时原生JavaScript API能提供更高的灵活性。学习何时和如何混合使用两者,可以提高代码的可维护性和效率。 6. **jQuery与现代前端框架的...

    实例讲解用法原生JavaScript处理AJAX恳求的方法_.docx

    ### 实例讲解用法原生JavaScript处理AJAX请求的方法 #### 一、引言 本文旨在详细介绍如何使用原生JavaScript处理AJAX(Asynchronous JavaScript and XML)请求,以替代常用的jQuery库中的`$.ajax()`方法。通过理解...

    artech-javascript-jquery-10

    不过,需要注意的是,随着ES6等新特性的出现,原生JavaScript的语法已经变得更加简洁,因此在现代前端开发中,适度地结合使用jQuery和其他现代工具,可以帮助找到最佳的开发平衡。 遗憾的是,提供的压缩包文件名称...

    Google-AJAX-Search.zip_google

    标题中的"Google-AJAX-Search.zip_google"表明这是一个与Google AJAX搜索相关的压缩包,而“Fast Reliable”描述了该技术的特点,即快速且可靠。标签"google"进一步确认了这个话题是关于谷歌的。从文件名称列表中,...

    原生JavaScript实现Ajax的方法

    原生JavaScript实现Ajax的方法 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过Ajax可以使得网页异步数据交互更为高效,提高用户体验。原生...

    JavaScript-使用javascript开发的音频解码器.zip

    随着技术的发展,JavaScript不仅可以处理DOM操作、Ajax请求,还能处理更复杂的任务,如音频处理和解码。本压缩包文件"JavaScript-使用javascript开发的音频解码器.zip"显然是一个专注于使用JavaScript进行音频解码的...

    原生ajax使用

    原生Ajax技术是Web开发中的一个关键组成部分,它允许开发者在不刷新整个页面的情况下与服务器进行异步数据交换。在JavaScript中,XMLHttpRequest对象是实现Ajax的核心,它提供了与服务器进行通信的能力。以下是对...

    原生JavaScript实现Ajax的方法_.docx

    ### 原生JavaScript实现Ajax的方法 #### 一、引言 Ajax(Asynchronous JavaScript and XML,异步JavaScript与XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据...

    前端开源库-ives-leaflet-ajax

    在压缩包“leaflet-ajax-master”中,你应该能找到ives-leaflet-ajax的源代码、示例、文档等相关文件。通过研究这些内容,你可以更好地理解和应用这个库,将其潜力充分发挥出来。 总结起来,ives-leaflet-ajax是一...

    JQUERY插件--ajax搜索

    jQuery 对原生 JavaScript 的 Ajax API 进行了封装,使得使用更加简洁、易懂。主要的 Ajax 方法有 `$.ajax()`, `$.get()`, `$.post()` 等。在 jQuery 中实现一个简单的 Ajax 请求如下: ```javascript $.ajax({ ...

    原生ajax库实现jsonp跨域短小精悍

    本文将深入探讨如何使用原生JavaScript实现一个简单的AJAX库,特别关注JSONP的实现。 首先,理解JSONP的基本原理是关键。JSONP利用了HTML中`&lt;script&gt;`标签不受同源策略限制的特点,通过动态创建`&lt;script&gt;`元素并...

Global site tag (gtag.js) - Google Analytics