ajax知识

Ajax
(asynchrous javascript and xml 异步的JavaScript和xml)
1.Ajax是什么?
是一种用来改善用户体验的技术,其本质是利用浏览器内部的
一个特殊对象(XMLHttpRequest)异步的发送请求,服务器返回部分数据,
浏览器利用这些数据对当前页面做部分修改,整个过程页面无刷新,不打断
用户的操作
注:异步,是指当这个对象向服务器发送请求的时候,浏览器不会销毁
当前页面,用户仍然可以对当前页面做其他操作
2.Ajax对象如何获得? 
  IE 5.5浏览器: ActiveXObject
  其他浏览器:   XMLHttpRequest
  Ajax没有标准化,要区分浏览器获得
function getAjax(){
	var ajaxo=null;
	if(window.XMLHttpRequest){
		ajaxo=new XMLHttpRequest();
	}else{
		ajaxo=new ActiveXObject("Microsoft.XMLHttp");
	}
}
3.Ajax对象的几个重要的属性
  1.onreadystatechange 绑定事件处理函数(处理readstatechange事件)
	注:当readyState属性值发生改变,比如从0变成1,就会产生readstatechange事件
  2.readyState 有五个值(0,1,2,3,4)表示Ajax对象与服务器通信的状态
	其中,4表示Ajax对象已经获得了服务器返回的所有数据
  3.rewponseText 获得服务器返回的文本
  4.responseXML	获得服务器返回的XML文档
  5.status 获得服务器返回的状态码
4.编程步骤
  1.获得Ajax对象。比如 var xhr=getXhr();
  2.利用Ajax对象发请求。
     方式一:发送get请求
	   a  xhr.open('get','check_uname.do?username=tom',true);
       第一个参数:请求方式。
       第二个参数: 请求地址,如果是get请求,请求参数要添加到请求 地址后面。
       第三个参数:如果值是true,表示异步。如果值是false,表示同步( 浏览器会锁定当前页面)。
	   true 异步 浏览器不会销毁页面,用户可继续操作
	   false 同步 浏览器锁定页面,用户不能操作
	   b  xhr.onreadystatechange=handler;绑定回调函数
	   c  xhr.send(null);发送求情
	 方式二:发送post请求
		 xhr.open('post','check_uname.do')
		 xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');//给请求数据加上消息头
		 shr.send('username=tiger');//post请求参数
		 注:按照http协议的要求,发送post请求是,请求数据包中应包含
		 content-type消息头,默认情况下,Ajax对象在打包时,不会添加该消息头
		 所以要调用xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');方法添加
		 注:
a. 请求参数放到send方法里面。
b. 按照http协议,如果发送的是post请求,应该提供一个 'content-type'消息头。但是,默认情况下,ajax对象并不 会提供这样一个消息头。 
  3.编写服务器端的程序。注:通常只需要返回部分数据
  4.处理服务器返回的数据,即编写事件处理函数
    if(xhr.readyState==4 && xhr.status==200){
		//获得服务器返回的数据
	    var txt = xhr.responseText;
		//更新页面
		...
	}
5.缓存问题
  1.如果使用IE浏览器发送get请求,浏览器会检查请求地址是否访问过
    如果访问过,则不再向服务器发送请求,而是显示之前的缓存结果
  2.如何解决?在请求地址后加随机数
6.乱码问题:
	get:
	    IE浏览器中Ajax会使用gbk对中文参数进行编码
		其他浏览器会使用utf-8来编码,服务器端默认使用
		ISO-8859解码。
		解决:
		step1.配置Tomcat文件61行URIEconding=utf-8
		step2.使用encoding函数对中文参数进行编码
	post:
		浏览器的Ajax会使用utf-8编码,服务器端会使用iso-8859解码,
		解决:
		request.setCaharacterEncoding("utf-8");

JSON(JavaScript object notation)
  1.json是一种轻量级数据交换格式。
  注:将要交换的数据转换成一种与平台无关的数据,然后发送给接收方处理
  轻量级,指的是相对于XML。JSON文档更小,解析更快,可读性好
  2.基本语法:
   *表示一个对象
   {"属性名":"属性值","属性名":"属性值",...}
   属性名必须使用双引号括起来,
   属性值可以是String,number,null,true/false
   属性值如果是String,必须使用双引号括起来
   *表示由多个对象组成的数组
   [{},{},{},...]
  3.使用JSON做数据交换
     *将java对象转换成JSON字符串
	 使用官方提供的JSONObject,JSONArray
	 *将JSON字符串转换成JavaScript对象
	 使用prototype.js提供的evalJSON

jQuery对Ajax的支持
$.ajax()
  1.用法:
    $.ajax({});其中{}是一个对象,用来设置各个选项参数
	常用选项参数
	url:请求地址
	type:请求类型
	date:请求参数,两种格式
		  请求字符串形式:如,'username=tom&age=22'
		  对象的形式:如,{"username":"tom","age":22}
    success:服务器处理正确,用来处理返回的数据一个函数
	error:服务器处理出错,用来处理服务器返回的数据的一个函数。
	dataType:服务器返回的数据类型
			text:文本
			html:html文档
			json:json字符串
			script:javascript脚本
	async:同步还是异步,默认是异步,当值为false,表示同步
load()
	1.用法:
	  向服务器发送异步请求,然后将服务器返回的数据直接添加到
	  符合要求的节点之上。
	  $obj.load(url);节点$obj向服务器发送请求,并将返回的数据写到该节点上
	  注:$obj是要操作的节点,
		   url是请求地址。
           data是请求参数,可以有两种形式(同上)。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值