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 相关文章推荐
手机号码,密码正则验证
Sep 04 Javascript
jquery.map()方法的使用详解
Jul 09 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
Feb 15 Javascript
jQuery 3.0十大新特性
Jul 06 Javascript
9个让JavaScript调试更简单的Console命令
Nov 14 Javascript
原生js开发的日历插件
Feb 04 Javascript
Bootstrap fileinput组件封装及使用详解
Mar 10 Javascript
JS switch判断 三目运算 while 及 属性操作代码
Sep 03 Javascript
基于js中的原型(全面讲解)
Sep 19 Javascript
Vue组件通信的几种实现方法
Apr 25 Javascript
js逆向解密之网络爬虫
May 30 Javascript
vue.js实现照片放大功能
Jun 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函数代码
2010/04/22 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
2019/02/14 PHP
深入理解JSON数据源格式
2014/01/10 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
python实现pdf转换成word/txt纯文本文件
2018/06/07 Python
python调用百度语音REST API
2018/08/30 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
英国钻石公司:British Diamond Company
2020/02/16 全球购物
办理退休介绍信
2014/01/09 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
就业意向书
2014/07/29 职场文书
简单租房协议书范本
2014/08/20 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
教师节晚会主持词
2015/06/30 职场文书