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 相关文章推荐
javascript 拖放效果实现代码
Jan 22 Javascript
jQuery 源码分析笔记(6) jQuery.data
Jun 08 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
Jul 08 Javascript
javascript与cookie 的问题详解
Nov 11 Javascript
node.js使用nodemailer发送邮件实例
Mar 10 Javascript
快速掌握Node.js环境的安装与运行方法
Feb 16 Javascript
AngularJs Javascript MVC 框架
Jun 20 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
Aug 25 Javascript
基于ts的动态接口数据配置的详解
Dec 18 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
Mar 04 Javascript
vue中父子组件的参数传递和应用示例
Jan 04 Vue.js
JS前端使用Canvas快速实现手势解锁特效
Sep 23 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实现按照权重随机排序数据的方法
2015/01/09 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
用js实现计算加载页面所用的时间
2010/04/02 Javascript
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
Angular4 中常用的指令入门总结
2017/06/12 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
从头学Python之编写可执行的.py文件
2017/11/28 Python
python 日期操作类代码
2018/05/05 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
管理科学大学生求职信
2013/11/13 职场文书
火锅店创业计划书范文
2014/02/02 职场文书
关于保护环境的标语
2014/06/09 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL