如何封装JS原生ajax函数

首先我们要明白ajax的原理和使用步骤

ajax是我们与后台连接使用的一个文档,主要分为四步,有三步是我们前端工作人员去完成的,

第一步是建立ajax的对象,第二部是发送请求到后台,第三步是后台所编写的数据,第四步是我们收到后台返回数据的处理,第四步返回的格式经常的有xml和json还有字符串;

封装ajax的函数是为了我们以后工作方便使用,以后直接调用就可以的了;

主要有四个参数,(‘get或post’,‘后台做连接的文件路径’,send()数据,第四步接受后台返回的值函数)

首先是第一步建立对象,

  1. if(window.XMLHttpRequest){
  2. xhr=new XMLHttpRequest(); 这步是做ie7及以上的兼容
  3. }
  4. else{
  5. xhr=new ActiveXObject('Microsoft.XMLHTTP'); 这步是做ie6的兼容
  6. }
然后是第二步,发送请求到后台; 

  1. if(method=='GET' && data){
  2. //如果是get方式,并且有data:传数据到服务器
  3. url=url+'?'+data;
  4. 发送方式有两种,‘get'和'post'
  5. } 如果用get方式发送就不用send()数据,如果用psot方式发送就需要send()数据
  6. xhr.open(method,url,true);
  7. if(method=='GET'){
  8. xhr.send(null);
  9. }
  10. else{
  11. xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  12. xhr.send(data);
  13. }
  14. 最后是第四步;接受后台返回的值;
    1. xhr.onreadystatechange=function(){
    2. if(xhr.readyState==4){
    3. if(xhr.status==200){
    4. if(fnsuccess){
    5. fnsuccess(xhr.responseText);//注意这里只能接收字符串,json和html数据。如果传过来的是xml数据格式,要换用responseXML属性
    6. }
    7. }
    8. else{
    9. alert('出差了,出错状态是:'+xhr.status);
    10. }
    11. }
    封成函数为;
    1. function ajax(method,url,data,fnsuccess){
    2. //1号线:创建ajax对象
    3. var xhr;
    4. if(window.XMLHttpRequest){
    5. xhr=new XMLHttpRequest();
    6. }
    7. else{
    8. xhr=new ActiveXObject('Microsoft.XMLHTTP');
    9. }
    10. //2号线:发送http请求(准备数据,真正的发送)
    11. if(method=='GET' && data){
    12. //如果是get方式,并且有data:传数据到服务器
    13. url=url+'?'+data;
    14. }
    15. xhr.open(method,url,true);
    16. if(method=='GET'){
    17. xhr.send(null);
    18. }
    19. else{
    20. xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    21. xhr.send(data);
    22. }
    23. //4号线:拿到的数据返回给调用ajax函数的地方
    24. xhr.onreadystatechange=function(){
    25. if(xhr.readyState==4){
    26. if(xhr.status==200){
    27. if(fnsuccess){
    28. fnsuccess(xhr.responseText);//注意这里只能接收字符串,json和html数据。如果传过来的是xml数据格式,要换用responseXML属性
    29. }
    30. }
    31. else{
    32. alert('出差了,出错状态是:'+xhr.status);
    33. }
    34. }
    35. }
    36. }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值