Ajax简单的异步交互及Ajax原生编写

 更新时间:2016年01月22日 10:43:39   作者:险峰  
一提到异步交互大家就会说ajax,仿佛ajax这个技术已经成为了异步交互的代名词.那下面将研究ajax的核心对象

一提到异步交互大家就会说ajax,仿佛ajax这个技术已经成为了异步交互的代名词.那下面将研究ajax的核心对象!

利用ajax实现异步交互无非4步:

1.创建ajax核心对象

2.与服务器建立连接

3.向服务器发送请求

4.接收服务器响应的数据

看似神秘的异步交互当明确这4步后,也许在大家脑海里已经有了初步的思路了

首先我们创建ajax的核心对象,由于浏览器的兼容问题我们在创建ajax核心对象的时候不得考虑其兼容问题,因为要想实现异步交互的后面步骤都基于第一步是否成功的创建了ajax核心对象.

function getXhr(){
// 声明XMLHttpRequest对象
var xhr = null;
// 根据浏览器的不同情况进行创建
if(window.XMLHttpRequest){
// 表示除IE外的其他浏览器
xhr = new XMLHttpRequest();
}else{
// 表示IE浏览器
xhr = new ActiveXObject('Microsoft.XMLHttp');
}
return xhr;
}
// 创建核心对象
var xhr = getXhr(); 

通过上述代码我们已经成功的创建了ajax核心对象,我们保存在变量xhr中,接下来提到的ajax核心对象都将以xhr代替.

第二步就是与服务器建立连接,通过ajax核心对象调用open(method,url,async)方法.

open方法的形参解释:

method表示请求方式(get或post)

url表示请求的php的地址(注意当请求类型为get的时候,请求的数据将以问号跟随url地址后面,下面的send方法中将传入null值)

async是个布尔值,表示是否异步,默认为true.在最新规范中这一项已经不在需要填写,因为官方认为使用ajax就是为了实现异步.

xhr.open("get","01.php?user=xianfeng");//这是get方式请求数据 
xhr.open("post","01.php");//这是以post方式请求数据 

第三步我们将向服务器发送请求,利用ajax核心对象调用send方法

如果是post方式,请求的数据将以name=value形式放在send方法里发送给服务器,get方式直接传入null值

xhr.send("user=xianfeng");//这是以post方式发送请求数据 
xhr.send(null);//这是以get方式 

第四步接收服务器响应回来的数据,使用onreadystatechange事件监听服务器的通信状态.通过readyState属性获取服务器端当前通信状态.status获得状态码,利用responseText属性接收服务器响应回来的数据(这里指text类型的字符串格式数据).后面再写XML格式的数据和大名鼎鼎的json格式数据.

xhr.onreadystatechange = function(){
               // 保证服务器端响应的数据发送完毕,保证这次请求必须是成功的
   if(xhr.readyState == 4&&xhr.status == 200){
      // 接收服务器端的数据
      var data = xhr.responseText;
       // 测试
       console.log(data);
   } 
};

ps:Ajax简单的异步交互

ajax简单的异步交互,可以先从get方式开始说起

那么创建一个Ajax与服务器端的异步请求,需要完成三个

步骤1、XMLHttpRequest对象的创建

if(window.XMLHttpRequest){//针对IE7以上 以及标准浏览器
var xhr=new XMLHttoRequest();
}else if(window.ActiveXObject){
var xhr=new ActiveXObject("Microsoft.XMLHTTP");
} 

步骤2、注册回调函数

xhr.onreadystatechange=callback;
或者xhr.onreadystatechange=function(){
//codes here 
} 

步骤3、设置连接信息

xhr.open("GET",url,true)//其中true表示为异步交互

步骤4、发送数据

xhr.send(null);

相关文章

  • 使用Ajax实时检测

    使用Ajax实时检测"用户名、邮箱等"是否已经存在

    这篇文章主要介绍了使用Ajax实时检测"用户名、邮箱等"是否已经存在,需要的朋友可以参考下
    2015-01-01
  • Ajax获取页面被缓存的解决方法

    Ajax获取页面被缓存的解决方法

    常利用AJAX写一些页面无刷新的内容获取页面,这种方式很快捷也很方便,但其中有一个问题,就是如果两次提交的参数相同时,返回的内容只返回上次获取的内容,如果我们在第一次修改了参数,第二次再次调用却会发现页面根本没有改变。
    2008-09-09
  • ajax请求携带自定义请求头header(跨域和同域)案例实战教程

    ajax请求携带自定义请求头header(跨域和同域)案例实战教程

    这篇文章主要介绍了ajax请求携带自定义请求头header(跨域和同域)案例实战教程,ajax请求是有同源策略的,虽然可以应用CORS等手段来实现跨域,但是这并不是说这样就是“同源”了,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • 利用Ajax检测用户名是否被占用的完整实例

    利用Ajax检测用户名是否被占用的完整实例

    这篇文章主要给大家介绍了关于如何利用Ajax检测用户名是否被占用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 在(ASP/PHP/JSP/html/js)中禁止ajax缓存的方法集锦

    在(ASP/PHP/JSP/html/js)中禁止ajax缓存的方法集锦

    禁止ajax缓存最简单的办法就是在js端直接生成一个随机数了,但是有时会发现此方法不适用于post了,如果我们要禁止post 提交数据的ajax缓存需要怎么处理呢,下面我整理了很多关于禁止ajax缓存的例子
    2014-08-08
  • Ajax实现文件下载

    Ajax实现文件下载

    本文给大家介绍ajax实现文件下载相关知识,涉及到ajax文件下载方面的知识,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-03-03
  • Ajax轮询请求状态(微信公众号带参数二维码登录网站)

    Ajax轮询请求状态(微信公众号带参数二维码登录网站)

    最近做了一个项目,其中有功能要求通过扫码微信公众号带参数的二维码来登录网站,接下来小编给大家介绍实现思路及代码,一起看看吧
    2016-09-09
  • 关于Ajax的疑难杂症详解

    关于Ajax的疑难杂症详解

    这篇文章主要给大家介绍了关于Ajax的疑难杂症,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • ajax的工作原理以及异步请求的封装介绍

    ajax的工作原理以及异步请求的封装介绍

    客户端通过浏览器的内置对象XMLHttpRequest来发送异步请求,当服务器返回响应时,会调用先前注册的回调函数,异步请求不会阻塞客户端的操作,达到页面无法刷新就可以更新数据的效果
    2013-09-09
  • Ajax提交参数的值中带有html标签不能提交成功的解决办法(ASP.NET)

    Ajax提交参数的值中带有html标签不能提交成功的解决办法(ASP.NET)

    这篇文章主要介绍了Ajax提交参数的值中带有html标签不能提交成功的解决办法(ASP.NET),非常不错,具有参考借鉴价值,需要的朋友参考下
    2016-12-12

最新评论