ajax实现数据请求

155 阅读2分钟

考虑到浏览器兼容问题,主要是判断iE9以上还是iE9以下,需要检查浏览器是否支持 XMLHttpRequest 对象。

如果支持,则创建 XMLHttpRequest 对象,不支持创建ActiveXObject('Microsoft.XMLHttp')对象

获取ajax对象



var xhr = null;
if(window.XMLHttpRequest){
	xhr = new XMLHttpRequest();
}else{
    xhr = new ActiveXObject('Microsoft.XMLHttp');


ajax发送请求,请求方式两种:get/post。以get请求方式为例:

一、获取ajax对象

上文已经提到,需要考虑浏览器兼容问题。

二、初始化,建立连接

    xhr.open("get","url",true/false);
    
    url:包括路径名和请求参数
    true:ajax向服务器发送的是异步请求,请求过程中,不会打断用户操作
    false:ajax向服务器发送的是同步请求,请求过程中,页面会被锁住,用户需要等待服务器响应结束之后,
    才能继续其他操作。
    

三、.给ajax对象注册监听器

    xhr.onreadystatechange=function(){}
   

用于接受返回数据信息

注:如果是post请求:

1.需加上 xhr.send("参数名=参数值&....");

2.需要加上消息头:xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");

问题

1.中文乱码问题

IE浏览器采用的gbk格式处理中文,chrome浏览器采用的是utf-8格式处理中文,而服务器解码格式是utf-8,所以ie浏览器有中文乱码问题,解决方案是,通过encodeURI(中文参数)处理参数

2.缓存问题

若请求地址不发生改变,那么ie浏览器返回的是缓存数据,不会真正的向服务器发送请求,如果需要发送请求,那么在请求地址后面添加随机数或者时间戳改变每一次的请求地址

jquery与ajax结合实现数据请求

jquery将它封装成了一个函数$.ajax(),来执行ajax请求。

$.ajax常用参数

常用参数:
1、url 请求地址
2、type 请求方式,默认是'GET',常用的还有'POST'
3、dataType 设置返回的数据格式,常用的是'json'格式,也可以设置为'html'
4、data 设置发送给服务器的数据
5、success 设置请求成功后的回调函数
6、error 设置请求失败后的回调函数
7、async 设置是否异步,默认值是'true',表示异步

基本写法

}

$.ajax({
url: '/change_data', 
type: 'GET', 
dataType: 'json', 
data:{'code':300268} 

success:function(dat){ alert(dat.name); }, 
error:function(){ alert('服务器超时,请重试!'); } 
});