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 相关文章推荐
dojo 之基础篇(三)之向服务器发送数据
Mar 24 Javascript
AJAX架构之Dojo篇
Apr 10 Javascript
jquery 指南/入门基础
Nov 30 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
Jun 23 Javascript
关于Javascript加载执行优化的研究报告
Dec 16 Javascript
javascript实现删除前弹出确认框
Jun 04 Javascript
JavaScript实现动态删除列表框值的方法
Aug 12 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
Dec 02 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
详解微信小程序中的页面代码中的模板的封装
Oct 12 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
Mar 10 Javascript
vue 计算属性和侦听器的使用小结
Jan 25 Vue.js
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堆栈与列队的学习
2013/06/21 PHP
PHP实现Soap通讯的方法
2014/11/03 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
小程序如何获取多个formId实现详解
2019/09/20 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
Python Tkinter GUI编程入门介绍
2015/03/10 Python
python字典快速保存于读取的方法
2018/03/23 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
python 通过视频url获取视频的宽高方式
2019/12/10 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
python-地图可视化组件folium的操作
2020/12/14 Python
打印机墨盒:123Inkjets
2017/02/16 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
如何在存储过程中使用Loop
2016/01/05 面试题
最新奶茶店创业计划书
2014/01/25 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
安全目标管理责任书
2014/07/25 职场文书
返乡农民工证明
2015/06/24 职场文书
初中体育教学随笔
2015/08/15 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android