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面向对象编程
Nov 15 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
Dec 27 Javascript
js定时器的使用(实例讲解)
Jan 06 Javascript
jquery单行文字向上滚动效果示例
Mar 06 Javascript
node.js中的buffer.toString方法使用说明
Dec 14 Javascript
JavaScript tab选项卡插件实例代码
Feb 23 Javascript
20分钟打造属于你的Bootstrap站点
Jul 27 Javascript
JS实现页面跳转参数不丢失的方法
Nov 28 Javascript
关于webpack代码拆分的解析
Jul 20 Javascript
javascript 面向对象实战思想分享
Sep 07 Javascript
微信小程序实现文件、图片上传功能
Aug 18 Javascript
vue实现搜索功能
May 28 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 无限分类的树类代码
2009/12/03 PHP
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
2013/10/15 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
2014/11/12 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
关于vue面试题汇总
2018/03/20 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
python fabric使用笔记
2015/05/09 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
Python3 修改默认环境的方法
2019/02/16 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
高中化学教学反思
2014/01/13 职场文书
文明餐桌活动方案
2014/02/11 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
节水倡议书范文
2014/04/15 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
因个人原因离职的辞职信范文
2015/05/12 职场文书
催款函范文
2015/06/24 职场文书
股权投资协议书
2016/03/23 职场文书
Django如何与Ajax交互
2021/04/29 Python
Python基础之元编程知识总结
2021/05/23 Python