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 相关文章推荐
IE浏览器打印的页眉页脚设置解决方法
Dec 08 Javascript
jquery怎样实现ajax联动框(二)
Mar 08 Javascript
javascript抖动元素的小例子
Oct 28 Javascript
Jquery中的层次选择器与find()的区别示例介绍
Feb 20 Javascript
javascript实现的一个随机点名功能
Aug 26 Javascript
jQuery的css()方法用法实例
Dec 24 Javascript
AngularJS中$http服务常用的应用及参数
Aug 22 Javascript
TypeScript学习之强制类型的转换
Dec 27 Javascript
JavaScript 用fetch 实现异步下载文件功能
Jul 21 Javascript
vue-cli的工程模板与构建工具详解
Sep 27 Javascript
Element input树型下拉框的实现代码
Dec 21 Javascript
react写一个select组件的实现代码
Apr 03 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
在smarty中调用php内置函数的方法
2013/02/07 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
angularJS之$http:与服务器交互示例
2017/03/17 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
2017/09/08 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
Python装饰器的函数式编程详解
2015/02/27 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
汇科协同Java笔试题
2012/03/31 面试题
大学自我评价
2014/02/12 职场文书
银行办公室岗位职责
2014/03/10 职场文书
报到证办理个人委托书
2014/10/06 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
保姆聘用合同
2015/09/21 职场文书