AJAX本质就是在HTTP协议的基础上以异步的方式与服务器进行通信,所谓异步,就是指某段程序执行时不会阻塞其它程序执行,其表现形式为程序的执行顺序不依赖程序本身的书写顺序,相反则为同步.

以下开始简单介绍一下使用原生JS来如何实现AJAX异步通信

第一步:创建一个能够实现异步请求的对象  new XMLHttpRequest

var xhr=new XMLHttpRequest();
console.log(xhr.readyState);//此时的状态码输出为0,它会返回XMLHTTP请求当前状态,此阶段确认XMLHttpRequest对象是否创建,并为调用open()方法进行未初始化做好准备.值为0表示对象已经存在,否则浏览器就会报错

第二步:请求报文行 xhr.open();xhr.open("get","07-register.php?name="+name);

//第一个参数传入请求方式,get/post,第二个参数是php的路径,如果是使用get方式请求还需要在后面写上需要传递的参数;
xhr.open("post","07-register.php");
//post请求只需php的路径即可
consolg.log(xhr.readyState);//此时状态码输出为1,表示正在向服务器发送数据

第三步:请求报文头  xhr.setRequestHeader();

这里的请求报文头在get请求方式中不需要设置;

xhr.setRquestHeader('Content-Type','application/x-www-from-urlencoded')

第四步:请求报文体 xhr.send();

//get请求报文体写法
xhr.send(null);
//post请求报文体写法
xhr.send('name'=name)
//参数中传入需要传递的参数

以上的请求步骤已经完成,接下来就是监听服务器的响应

xhr.onreadystatechange=function(){
console.log(xhr.readyState) /*此时输出2再输出3,数值2表示已经接收完全响应数据.
并为下一阶段对数据解析作好准备.状态3此阶段解析接收到的服务器端响应数据。即根据服务器端响应
头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取
的格式,为在客户端调用作好准备。状态3表示正在解析数据*/
/*判断当前的响应是否成功 1.服务器做出了响应 2.响应的结果是正确的*/
if(xhr.status==200 && xhr.readyState==4){
console.log(xhr.readyState);/*此阶段确认全部数据都已经解析
为客户端可用的格式,解析已经完成。值为4表示数据解析完毕,可以通过XMLHttpRequest对象的相应属性取*/
var result=xhr.responseText;
//获取到结果
}
}

以上就是ajax简单的请求步骤,如有错误,欢迎指正

原生javaScript中使用Ajax实现异步通信的更多相关文章

  1. ThinkPHP 中使用 IS_AJAX 判断原生 JS 中的 Ajax 出现问题

    问题: 在 ThinkPHP 中使用原生 js 发起 Ajax 请求的时候.在控制器无法使用 IS_AJAX 进行判断.而使用 jQuery 中的 ajax 是没有问题的. 在ThinkPHP中.有一 ...

  2. 浅谈JavaScript中的Ajax

    引言 作为一名WEB开发者,我想Ajax技术是一定需要掌握的.你也许平时没有使用JavaScript真正的写过Ajax.但是你一定使用过JQuery里面的相关函数来进行异步调用.今天我们就来介绍下原生 ...

  3. JavaScript中利用Ajax 实现客户端与服务器端通信(九)

    一:Ajax (Asynchronous JavaScript and XML)不是一个新的技术,事实上,它是一些旧有的成熟的技术以一种全新的更加强大的方式整合在一起 Ajax的关键技术: 1.使用X ...

  4. 原生JavaScript中动画与特效的实现原理

    现如今,许多页面上均有一些动画效果.适当的动画效果可以在一定程度上提高页面的美观度,具有提示效果的动画可以增强页面的易用性. 实现页面动画的途径一般有两种. 一种是通过操作JavaScript间接操作 ...

  5. 原生JavaScript下的Ajax

    概述 AJAX即asynchronous javascript and XML,中文翻译是异步的javascript和XML.是指一种创建交互式网页应用.用于创建快速动态网页的开发技术. 传统的网页( ...

  6. 【从0到1学Web前端】javascript中的ajax对象(一) 分类: JavaScript 2015-06-24 10:18 754人阅读 评论(1) 收藏

    现在最流行的获取后端的(浏览器从服务器)数据的方式就是通过Ajax了吧.今天就来详细的来学习下这个知识吧.如果使用ajax来访问后段的数据,浏览器和浏览器端的js做了那些工作呢?我做了一个图,请大家看 ...

  7. JavaScript中的ajax(二)

    一.Ajax概念Ajax是(Asynchronous JavaScript And XML)是异步的JavaScript和xml.也就是异步请求更新技术.Ajax是一种对现有技术的一种新的应用,不是一 ...

  8. 【学习笔记】在原生javascript中使用ActiveX和插件

    什么是插件 现在的浏览器提供了大量的内置功能,但仍然有一些工作无法完成,如播放音频和视频.插件及其扩展浏览器功能就尤为重要. 插件是可下载的应用程序,可以插入到浏览器中,现在有很多不同的插件,常用的有 ...

  9. 解决JavaScript中使用$.ajax方式提交数组参数

    一般的,可能有些人在一个参数有多个值的情况下,可能以某个字符分隔的形式传递,比如页面上有多个checkbox: $.ajax{ url:"xxxx", data:{ p: &quo ...

随机推荐

  1. cell选中后进入重用池出来选中状态消失

    #import "XXViewController.h" @interface XXViewController ()<UITableViewDelegate,UITable ...

  2. extern extern “C”用法详解

    1.extern 修饰一个变量,告诉编译器这个变量在其他地方定义,编译器不会给出变量未定义的警告. extern tells the compiler that the variable is def ...

  3. LeetCode OJ 112. Path Sum

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  4. 十二 .ocBlock

    NSProxy是一个不继承NSObject的根类(尽管它遵守NSObject协议),调用[[NSProxy alloc]init]将会产生一个运行异常. 所幸,oc引入被称为“块代码”的第一级函数的概 ...

  5. 在easyui中如何修改combobox的下拉框的高度为自适应高度

    在easyui中,有时候easyui下拉框的高度比较高,如果我们的值比较少,而下拉框的高度很高的话看起来不好看,修改前效果如下所示: 要修改下拉框的高度和我们的值自适应的 话,只要添加一个panelH ...

  6. [转]Oracle 经验集

    -- 转换字符串为日期格式 to_date('2011-12-30 11:54:30','yyyy-MM-dd:hh24:mi:ss') Oracel 用 C# 连接,Microsoft 自带的 Sy ...

  7. AndroidStudio关联svn并上传代码到svn服务器上

    打开AndroidStudio,按Ctrl+Shif+S快捷键,进入Settings设置页面.如上图所示,找到Version Control->点击Subversion->右边框口中勾选U ...

  8. My97 设置近3天日期

    1.引用my97 js 和css 2.前台代码 <div class="FormItem"> <label> 申请时间</label> < ...

  9. display:table-cell介绍

    一.display:table-cell属性简述 display:table-cell属性指让标签元素以表格单元格的形式呈现,类似于td标签.目前IE8+以及其他现代浏览器都是支持此属性的,但是IE6 ...

  10. Python:线程

    Python中创建线程有两种方式:函数或者用类来创建线程对象. 函数式:调用 _thread 模块中的start_new_thread()函数来产生新线程. 类:创建threading.Thread的 ...