AJax细节详解
2011-09-20 06:44 刘永强 阅读(197) 评论(0) 收藏 举报
AJax细节详解
一:什么是Ajax?
Ajax全称市“Asynchronous JavaScript and XML”,中文意思是异步JavaScrip和XML,是指一种创建交互式网页应用的开发技术,AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词。
二:Ajax的优点
Ajax在本质上是一个浏览器端的技术,主要目的在于局部客户端及服务器间的数据交换,这个技术的主角是XMLHttpRequset,在于不用重新载入整个页面来更新数据,也就是所谓的Refresh without Reload(轻刷新),通过JavaScript与服务器沟通,使用XMLRequest本身传送数据量很小,所以反应会更快,也就是让网络程式更像一个桌面程序,Ajax就是运用javascript在后台帮我们跟服务器要数据,最后由javascript或者dom来帮你呈现结果。
三:创建XMLHttpRequest对象(注意浏览器兼容问题?????)
function createXmlHttp() {//创建xhr对象
var xhobj = false;
try {
xhobj = new ActiveXObject("Msxml2.XMLHTTP"); // ie msxml3.0+
} catch (e) {
try {
xhobj = new ActiveXObject("Microsoft.XMLHTTP"); //ie msxml2.6
} catch (e2) {
xhobj = false;
}
}
if (!xhobj && typeof XMLHttpRequest != 'undefined') {// Firefox, Opera 8.0+, Safari
xhobj = new XMLHttpRequest();
}
return xhobj;
}
四:XMLHttpRequest对象的方法
方法 说明
abort 取消请求
open 需要使用多个参数,第一个设置方法属性,第二个设置目标URL,第三个指定是同步(false)还是异步(true)发送请求
send 发送请求到服务器
setRequestHeader 添加自定义HTTP头到请求
getAllResponseHeaders 获取HTTP响应头的整个列表
getResponseHeader 仅获取指定的HTTP响应头
五:Ajax两种请求方式:
get方式:var xhr=new XMLHttpRequest();xhr.setRequestHeader("If-Modified-Since","0");作用是设置浏览器不使用缓存
post方式:xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");只有写了这句代码才能接收到post传送的数据
六:XMLHttpRequest对象常用属性
onreadystatechange------返回或设置异步请求的事件处理程序
readyState--------------返回状态码:0:没有初始化;1打开;2发送;3:正在接收;4:已加载
responseText------------使用字符串返回Http响应
responseXML-------------使用xml dom对象返回Http响应
status------------------返回http状态码
七:注意点:
(1)xhr.send();send方法里传递的参数为键值对;
(2)将泛型集合,转成javascript的 json数组字符串
1.创建 js序列化器对象
System.Web.Script.Serialization.JavaScriptSerializer jsS = new System.Web.Script.Serialization.JavaScriptSerializer();
2调用序列化方法,将 泛型集合对象list转成json数组字符串
string jsonArrStr = jsS.Serialize(list);
(3)获得请求报文里的参数t,可能是get也可能是post过来,用params均可获取到
string type = context.Request.Params["t"];
(4)var listJsonArr = eval(res); eval函数的作用是:把一个形式类似于数组的字符串转换成数组
(5)当在js中利用表单以post的形式提交表单数据时,需要设置请求报文头,否则服务器不认识发送到服务器的数据。
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
浙公网安备 33010602011771号