JS实现Ajax的方法分析


Posted in Javascript onDecember 20, 2016

本文实例分析了JS实现Ajax的方法。分享给大家供大家参考,具体如下:

一、什么是Ajax

不刷新的情况下读取数据或提交数据

(最早出现ajax:谷歌地图,拖动一下出现一片新的视野)

应用:用户注册、在线聊天、微博

特性:只能从服务器上去读取数据(所以我们需要配置自己的服务器程序AMP)

二、使用Ajax

1.基础:请求并显示静态TXT文件

btn.onclick=function(){
  ajax('abc.txt',function(str){
    alert(str);
  });
}

①Ajax里面文件的编码要和页面的编码一致

②缓存、阻止缓存(好处大于缺点,所以不能什么时候都清缓存)
缓存能帮助我们加速网络访问,所谓缓存,就是服务器上这个文件,它只读一次,第二次就从你的硬盘里、缓存里直接去拿,而不是真的通过网络来请求

有时候我们需要阻止缓存(比如服务器上东西变化了,但客户端请求来的还是原来的东西),办法如下,加时间戳:

ajax('abc.txt?t='+new Date().getTime(),function(str){});
//new Date().getTime()为现在的毫秒数,用户绝对不可能在1毫秒内点两次,所以每次请求的t都不一样

2.动态数据:请求Js(或json)文件

Ajax从服务器上读取的所有东西都是以文本的形式(字符串)存在的,如何转换?

eval()计算字符串里的值

ajax('abc.txt',function(str){
    var arr=eval(str);
    alert(arr);
});

例子:分页

<ul id="list">
</ul>
<a href="#"></a>
<a href="#"></a>
<a href="#"></a>
window.onload=function(){
  var oUl=getElementById("list");
  var aBtn=getElementsByTagName("a");
  var i;
  for(i=0;i<aBtn.length;i++){
    aBtn[i].index=i;
    aBtn[i].onclick=function(){
      ajax('page'+(this.index+1)+'.txt',function(str){
        var aData=eval(str);
        oUl.innerHTML='';
        for(i=0;i<aData.length:i++){
          var oLi=document.createElement("li");
          oLi.innerHTML='<strong>'+aData[i].user+'</strong><i>'+aData[i].pass+'</i>';
          oUl.appendChild(oLi);
        }
      });
    };
  }
};

三、Ajax原理

HTTP请求方法

1.GET--用于获取数据(如浏览贴子) 把数据放在URL(网址)里面来提交     安全性低、容量低、便于分享(将网址发给别人)

2.POST--用于上传数据(如用户注册) 把数据放在不是URL的地方     安全性一般、容量几乎无限、不便于分享

四、封装一个自己的Ajax函数

1.创建Ajax

2.连接服务器

3.发送请求

4.接收返回

function ajax(url,fnSucc,fnFaild){
  //1.创建
  var oAjax=null;
  if(window.XMLHttpRequest){ //对ie6来说,直接用XMLHttpRequest是不存在的会出错
    oAjax=new XMLHttpRequest(); //ie6以上
  }else{
    oAjax=new ActiveXObject("Microsoft.XMLHTTP"); //ie6
  }
  //2.连接服务器,open(方法,url,是否异步)
  oAjax.open('GET',url,true);
  //3.发送请求
  oAjax.send();
  //4.接收返回 OnReadyStateChange
  oAjax.onreadystatechange=function(){    //onreadystatechange事件
    if(oAjax.readyState==4){ //readyState属性:请求状态 4是完成(完成不代表成功)
      if(oAjax.status==200){ //status属性:请求结果 200代表成功
        fnSucc(oAjax.responseText); //responseText属性:服务器发回给我们的内容
      }
      else{
        if(fnFaild){
          fnFaild();
        }
      }
    }
  };
};

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js jquery数组介绍
Jul 15 Javascript
JavaSript中变量的作用域闭包的深入理解
May 12 Javascript
js监听鼠标事件控制textarea输入字符串的个数
Sep 29 Javascript
javascript常用代码段搜集
Dec 04 Javascript
jQuery解析json数据实例分析
Nov 24 Javascript
基于JavaScript实现网页倒计时自动跳转代码
Dec 28 Javascript
基于Vue.js实现数字拼图游戏
Aug 02 Javascript
JS前端加密算法示例
Dec 22 Javascript
js实现一键复制功能
Mar 16 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
Aug 22 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
Jul 19 Javascript
浅谈javascript如何获取文件后缀名
Aug 07 Javascript
JS实现淡入淡出图片效果的方法分析
Dec 20 #Javascript
自学实现angularjs依赖注入
Dec 20 #Javascript
JS多物体实现缓冲运动效果示例
Dec 20 #Javascript
详解js中Number()、parseInt()和parseFloat()的区别
Dec 20 #Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
Dec 20 #Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
Dec 20 #Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
Dec 20 #Javascript
You might like
浅析PHP 按位与或 (^ 、&amp;)
2013/06/21 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
jQuery 创建Dom元素
2010/05/07 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
Python内置函数locals和globals对比
2020/04/28 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
咖啡厅创业计划书范本
2014/01/22 职场文书
经典商业广告词
2014/03/13 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书