Ajax基础

一、 基础

ajax能且仅能从服务器上读取文件信息
服务器:网页浏览过程分析
Ajax:无刷新数据读取
常用的地方:用户注册和在线聊天室,分为同步和异步

二、使用

基础:请求并显示静态TXT文件
字符集编码格式:utf-8编码。
缓存、阻止缓存,利用url里的’abc.txt?t=’+newDate().getTime() (毫秒数)
动态数据:请求JS(或json)文件
在服务器上读到的东西全部是以文本(string)的方式,因此无法拿到数组或者json,需要eval
eval(str)的使用:将字符串转换成js代码(函数,计算等)
服务器上更多的是放的json或由json组成的数组

三、http请求方法

1、GET:用于获取数据(如:浏览贴子):把数据放在url(网址)里来提交
2、POST:用于上传数据(如:用户注册):把数据放在不是url的地方提交
区别:
get在url里传送数据:安全性低、容量小
post安全性一般、容量几乎无限
get便于分享(商品地址和url有关),适合获取,且会缓存
post更适合上传(图片等)

http请求方法http://blog.sina.com.cn/s/blog_8211f08a0102ve2a.html

四、封装一个Ajax

1、创建Ajax对象:

全局变量和全局函数都是window的属性和方法,只是前面的window.被省略了,但是他们未定义的时候出错是不同的(用一个不存在的变量会出错,而用一个不存在的属性只是未定义),因此可以用window.XX的方式做判断

2、与服务器连接:open(方法,文件名,异步传输)

方法:GET/POST
文件名:你的文件名
同步和异步:false/true
事件一件一件进行就是同步,多件事一起进行就是异步

3、发送请求:send()
4、接收返回值:

onreadystatechange:与服务器发生数据传输时
readyState属性:请求状态
0、(未初始化)还没有调用open()方法
1、(载入)已调用send()方法,正在发送请求
2、(载入完成)send()方法完成,已收到全部相应内容
3、(解析)正在解析相应内容
4、(完成)相应内容解析完成,可以在客户端调用了
status属性:是否成功(200成功,常见失败404)
responseText属性:返回的数据

五、JS封装

function ajax(url,fnSucc,fnFaild){  
   //参数:1、连接服务器的地址;2、成功时函数;3、失败时函数  
   //1、创建Ajax对象  
   var oAjax = null;  
   if(window.XMLHttpRequest){  
      oAjax = new XMLHttpRequest();    
   }else{  
      oAjax = new ActiveXObjext("Microsoft.XMLHTTP");  
   }  
   //2、连接服务器  
   oAjax.open('GET',url,true);  //true表示同步
   //3、发送请求  
   oAjax.send();  
   //4、接收服务器的返回  
   oAjax.onreadystatechange = function(){  
      if(oAjax.readyState ==4){  //完成  
         if(oAjax.status ==200){  
         //alert('成功: '+oAjax.responseText);  
         fnSucc(oAjax.responseText);    
      }else{  
         //alert('失败');  
         if(fnFaild){  
           fnFaild();  
         }
      }
   }
}   

IE低版本使用ActiveXObject,和W3C标准不一样

六、状态码readyState

  • 0:未初始化,还没调用send()方法;
  • 1:载入,已调用send()方法,正在发送请求;
  • 2:载入完成,send()方法执行完成,已经接收到全部响应内容;
  • 3:交互,正在解析响应内容;
  • 4:完成,响应内容解析完成,可以在客户端调用了

七、status

  • 2xx:成功处理请求;
  • 3xx:需要重定向,浏览器直接跳转;
  • 4xx:客户端请求错误;
  • 5xx:服务器端错误;

八、 jQ封装

$.ajax({
    method: 'post',//get
    url: '',
    contentType: 'application/json',
    data:'',
    success: function (data) {
        
    },
    error:function(){

    }
});

九、优点:

  • 1.无刷新更新数据:减少用户等待时间
  • 2.异步与服务器通信:不需要打断用户的操作,具有更加迅速的响应能力
  • 3.前端和后端负载平衡:减轻服务器和带宽的负担
  • 4.基于标准被广泛支持:不需要下载浏览器插件或者小程序
  • 5.界面与应用分离:有利于分工合作、减少非技术人员对页面的修改造成的WEB应用程序错误、提高效率、

十、缺点:

  • 1.AJAX干掉了Back和History功能:动态更新的页面,用户无法回到前一个页面状态,因为浏览器仅能记忆历史记录中的静态页面
    解决方法:使用URL片断标识符来保持跟踪

  • 2.AJAX的安全问题:

  • 3.对搜索引擎支持较弱

  • 4.破坏程序的异常处理机制

  • 5.违背URL和资源定位的初衷:你在一个URL地址下面看到的和我在这个URL地址下看到的内容是不同的。

  • 6.AJAX不能很好支持移动设备

  • 7.客户端过大,太多客户端代码造成开发上的成本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值