JS的原生的Ajax(一)

简介: JS的原生的Ajax(一)

一. Ajax


Ajax, 全称是 Asynchronous JavaScript And XML, 异步JavaScript 和XML.


可以在不更新整个页面的情况下,刷新数据,通俗来讲,可以局部刷新页面。 以前的web开发时,前台哪怕进行一个小小的交互,如验证用户名是否重复时,也会往服务器端发送一个请求,服务器端接收响应之后,重新渲染页面,导致新展示的页面并不是原先的那个填写的页面, 所以,常常要把所有的验证都放置在提交的时候进行验证,并不能随时填写,随时验证。 现在前后端分离,就用的是Ajax和JSON来进行传递数据。


但Ajax破坏了浏览器的后退和加入收藏书签的功能。 老蝴蝶认为, Ajax的优点是远远大于缺点的,应该提倡使用的。 浏览器的后退和加入收藏书签可以通过其他方式来达到类似的功能效果。


二. Ajax 的对象 XMLHttpRequest


原生的JavaScript 的Ajax, 是通过 XMLHttpRequest 对象来进行处理的, 所以要学习原生的Ajax ,就必须要对XMLHttpRequest 对象进行详细的了解。 现在的JQuery 已经封装了 Ajax。


二.一 XMLHttpRequest 对象的属性


image.png


二.二 XMLHttpRequest 的处理函数


image.png


二.三 XMLHttpRequest 的方法


image.png


其中, readyStatus 的数字所代表的意义是这样的


二.四 readyStatus 数字代表意义


image.png


其中,可知,当状态是4时,表示发送ajax 成功,并且接收到后端传递过来的数据。 成功不成功不能确定。


二.五 status 常见的状态码


image.png


二.六 创建 XmlHttpRequest 对象


在创建HttpRequest对象时, 要注意兼容性 ,特指的是IE6版本, IE的往上版本没有这些问题。


function createHttpRequest(){
  var httpRequest;
  if(window.XMLHttpRequest){
    httpRequest=new XMLHttpRequest();
  }else{  //如果是IE6, 用这个构建
    httpRequest=new ActiveXObject("Microsoft.XMLHTTP");
  }
  return httpRequest;
}


三. 原先Ajax 小例子测试


三.一 原生的 Ajax的步骤


步骤很简单的。


1 . 创建 XMLHttpRequest 对象


2 . 调用open() 打开网址,可通过 setRequestHeader 设置头部信息


3 . 调用send() 方法发送


4 .通过 readyState=4 和 status=200 来判断请求成功


5 . 成功之后,通过responseText来得到后端的返回数据,前端进行处理数据


三.二 前端页面展示


<div>
  <span id="respSpan"></span> <br/>
  <button id="btn" onClick="getAjaxRequest()">原生的ajax</button>
</div>
<script type="text/javascript" src="/SpringMVC09/js/calc.js"></script>


三.三 JS的Ajax处理


function getAjaxRequest(){
  //1. 创建XmlHttpRequest对象
  var xmlHttpRequest=createHttpRequest();
  //2 . 设置请求的路径和地址
  xmlHttpRequest.open("GET","voidJson",true);
  //3 .设置请求的头部,来设定类型
  xmlHttpRequest.setRequestHeader("content-type","application/x-www-form-urlencoded");
  //4. 发送
  xmlHttpRequest.send();
  //5. 进行判断后处理
  xmlHttpRequest.onreadystatechange=function(){
    if(xmlHttpRequest.readyState==4){ //状态数字是4 
      if(xmlHttpRequest.status==200){ //响应码是: 200,正常的
        responseEffect(xmlHttpRequest); //响应生效,单独写个响应的方法
      }else if(xmlHttpRequest.status==404){ //是404,错误的url
        alert("错误的url地址");
      }
      //... status 可判断多个
    }
    //... readyState 可判断多个
  }
}
//创建 对象
function createHttpRequest(){
  var httpRequest;
  if(window.XMLHttpRequest){
    httpRequest=new XMLHttpRequest();
  }else{
    httpRequest=new ActiveXObject("Microsoft.XMLHTTP");
  }
  return httpRequest;
}
//响应结果
function responseEffect(xmlHttpRequest){
  //获取值后进行显示 
  var text=xmlHttpRequest.responseText;
  var span=document.getElementById("respSpan");
  span.innerHTML=text;
}


三.四 测试运行


之前:


20190919171435993.png


点击按钮,进行查看


20190919171444905.png

相关文章
|
1月前
|
数据采集 前端开发 JavaScript
虎扑APP数据采集:JavaScript与AJAX的结合使用
虎扑APP数据采集:JavaScript与AJAX的结合使用
|
1月前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
45 0
|
3月前
|
移动开发 前端开发 JavaScript
js之ajax |12-6
js之ajax |12-6
|
3月前
|
移动开发 前端开发 JavaScript
原生JavaScript+canvas实现五子棋游戏_值得一看
本文介绍了如何使用原生JavaScript和HTML5的Canvas API实现五子棋游戏,包括棋盘的绘制、棋子的生成和落子、以及判断胜负的逻辑,提供了详细的代码和注释。
52 0
原生JavaScript+canvas实现五子棋游戏_值得一看
|
4月前
|
Devops 持续交付 测试技术
JSF遇上DevOps:开发流程将迎巨变?一篇文章带你领略高效协同的魅力!
【8月更文挑战第31天】本文探讨了如何在JavaServer Faces(JSF)开发中融入DevOps文化,通过持续集成与部署、自动化测试、监控与日志记录及反馈机制,提升软件交付速度与质量。文中详细介绍了使用Jenkins进行自动化部署、JUnit与Selenium进行自动化测试、ELK Stack进行日志监控的具体方法,并强调了持续改进的重要性。
44 0
|
4月前
|
JavaScript 前端开发 API
从零开始学表单操作,jQuery 与原生 JavaScript 完全指南,带你轻松掌握网页交互关键!
【8月更文挑战第31天】在网页开发中,表单是实现用户互动的关键元素。无论是收集信息、提交数据还是验证输入,都需要对表单进行有效操作。本文档介绍了如何使用原生 JavaScript 和 jQuery 操作表单,包括获取表单元素、读写表单值、处理表单提交及验证等核心功能。jQuery 提供了更简洁的语法和更好的兼容性,但原生 JavaScript 在性能上有优势。选择合适的方法取决于项目需求和个人偏好。下面通过具体示例展示了两种方式的操作方法。
43 0
|
4月前
|
XML JSON 前端开发
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
35 0
|
4月前
|
JavaScript 前端开发 网络协议
|
4月前
|
JavaScript 前端开发 安全
js之AJAX
js之AJAX
37 0
N..
|
7月前
|
XML JSON 前端开发
jQuery实现Ajax
jQuery实现Ajax
N..
75 1