轻松理解JavaScript之AJAX


Posted in Javascript onMarch 15, 2017

摘要

AJAX技术是网页构建的必备技能之一,本文希望能帮助大家轻松的学习这项技术

一、什么是ajax?

ajax(异步javascript xml) 能够刷新局部网页数据而不是重新加载整个网页。

二、如何使用ajax?

第一步:创建xmlhttprequest对象

创建xmlhttprequest对象,XMLHttpRequest对象用来和服务器交换数据。

var xmlhttp =new XMLHttpRequest();

第二步:注册回调函数

onreadystatechange函数,当服务器响应请求并返回数据后,我们想要客户端处理这些数据就需要使用onreadystatechange函数,每次xmlhttprequest对象的readyState发生改变都会触发onreadystatechange函数。对于readyState会在下一章节详细介绍。

xmlHttp.onreadystatechange= callback;
  function callback(){}

第三步:配置和发送请求

使用xmlhttprequest对象的open()和send()方法配置和发送资源请求给服务器。

xmlhttp.open(method,url,async) method包括get 和post,url主要是文件或资源的路径,async参数为true(代表异步)或者false(代表同步)

xmlhttp.send();使用get方法发送请求到服务器。

xmlhttp.send(string);使用post方法发送请求到服务器。

post表单数据需要使用xmlhttprequest对象的setRequestHeader方法增加一个HTTP头。

post 发送请求什么时候能够使用呢?

(1)更新一个文件或者数据库的时候。

(2)发送大量数据到服务器,因为post请求没有字符限制。

(3)发送用户输入的加密数据。

xhttp.open("POST", "ajax_test.aspx", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");

第四步:处理响应数据

使用xmlhttprequest对象的responseText或responseXML属性获得服务器的响应。

使用responseText属性得到服务器响应的字符串数据,使用responseXML属性得到服务器响应的XML数据。

在回调函数中使用readyState==4和status==200判断交互是否结束,响应是否正确,并根据需要获取服务器端返回的数据,更新页面内容。

function callback(){
  if(xmlHttp.readyState == 4){
   //判断交互是否成功
   if(xmlHttp.status == 200){
    //获取服务器返回的数据
    //获取纯文本数据
    var responseText =xmlHttp.responseText;
    document.getElementById("info").innerHTML = responseText;
   }
  }
}

三、AJAX运行过程中5种状态(readyState)

在AJAX实际运行当中,对于访问XMLHttpRequest(XHR)时并不是一次完成的,而是分别经历了多种状态后取得的结果,对于这种状态在AJAX中共有5种,这五种状态是由AJAX引擎切换设置的,分别是。

0 : 定义了XHR,但还未初始化

1 :调用send()方法,正在发送请求,请求发送完毕后,开始等待接收响应

2 :响应接收完成

3 :正在解析响应内容

4 :响应内容解析完成,返回给客户端调用

对于上面的状态,其中“0”状态是在定义后自动具有的状态值,而对于成功访问的状态(得到信息)我们大多数采用“4”进行判断。

值得注意的是,状态每切换一次,都会触发onreadystatechange 事件,所以整个过程onreadystatechange 事件被触发5次

四、AJAX的优缺点

优点

1、最大的一点是页面无刷新,在页面内与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力给用户的体验非常好。

2、减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。

缺点

1、ajax干掉了back按钮,即对浏览器后退机制的破坏。

2、对搜索引擎的支持比较弱。

 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
web css实现整站样式互相切换
Oct 29 Javascript
node.js中Socket.IO的进阶使用技巧
Nov 04 Javascript
Node.js事件驱动
Jun 18 Javascript
JavaScript的jQuery库中ready方法的学习教程
Aug 14 Javascript
jQuery实现简洁的导航菜单效果
Nov 23 Javascript
JS获取屏幕高度的简单实现代码
May 24 Javascript
vue中axios处理http发送请求的示例(Post和get)
Oct 13 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
Apr 11 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
Oct 16 Javascript
在react-antd中弹出层form内容传递给父组件的操作
Oct 24 Javascript
基于elementUI竖向表格、和并列的案例
Oct 26 Javascript
Ajax异步刷新功能及简单案例
Nov 20 Javascript
jQuery插件ContextMenu自定义图标
Mar 15 #Javascript
JavaScript对象引用与赋值实例详解
Mar 15 #Javascript
jQuery图片瀑布流的简单实现代码
Mar 15 #Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
Mar 15 #Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
Mar 15 #Javascript
js中的触发事件对象event.srcElement与event.target详解
Mar 15 #Javascript
jQuery动态产生select option下拉列表
Mar 15 #Javascript
You might like
比较详细PHP生成静态页面教程
2012/01/10 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
JS option location 页面跳转实现代码
2008/12/27 Javascript
判断用户是否在线的代码
2011/03/05 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
Node.js之readline模块的使用详解
2019/03/25 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
小米5s微信跳一跳小程序python源码
2018/01/08 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
python求质数的3种方法
2018/09/28 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
详解10个可以快速用Python进行数据分析的小技巧
2019/06/24 Python
Python语言异常处理测试过程解析
2020/01/08 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
Laravel中Kafka的使用详解
2021/03/24 PHP
销售员自我评价怎么写
2013/09/19 职场文书
运动会领导邀请函
2014/01/10 职场文书
团队精神口号
2014/06/06 职场文书
个人作风建设自查报告
2014/10/22 职场文书
群众路线个人整改方案
2014/10/25 职场文书
入股协议书范本
2014/11/01 职场文书
Python+Tkinter制作专属图形化界面
2022/04/01 Python