1,异步请求的方法步骤:

1,推断当前用户支持的浏览器类型

XMLHttpRequest:推断是否支持非IE浏览器,相应的创建方法:xmlhttp = new XMLHttpRequest();

window.ActiveXObject:推断是否支持IE浏览器,相应的创建方法:xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

2,开辟连接创建路径

xmlhttp.open(參数一,參数二,參数三);

參数一:请求的方式get  post

參数二:请求路径

參数三:表示是否是异步请求,true(是),false(不是)

3,创建绑定方法推断请求的状态

onreadystatechange:假设每一次请求的状态改变的时候就会触发该函数

3-1推断是否是状态4和连接正常200

凝视:readyState推断请求状态是否到4

 status:推断响应的状态码是否正常

3-2,获取后台传过来的数据responseText

var msg = xmlhttp.responseText;

3-3,把数据写入指定的容器内

document.getElementById('span').innerHTML=decodeURI(msg,"UTF-8");

4,发送请求

xmlhttp.send(參数);get请求时參数为null,post请求时

异步请求的5个状态:

0表示请求未连接

1代表与server已连接

2代表server已接受数据

3正在处理数据

4处理完毕

2,异步请求方法

<script type="text/javascript">

var xmlhttp;

function getMsg(){

//支持非IE浏览器

if(window.XMLHttpRequest){

xmlhttp = new XMLHttpRequest();

}else if(window.ActiveXObject){//支持IE浏览器

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

}

//get请求

//xmlhttp.open("get","AjaxServlet?text=异步请求&num="+Math.random(),true);

//post请求

xmlhttp.open("post","AjaxServlet",true);

//200代表请求正常,404:路径错误,500:服务端代码有错误

//onreadystatechange:假设每一次请求的状态改变的时候就会触发该函数

xmlhttp.onreadystatechange = function(){

//readyState推断请求状态是否到4

//status:推断响应的状态码是否正常

if(xmlhttp.readyState==4 && xmlhttp.status==200){

//获取后台传过来的数据responseText

var msg = xmlhttp.responseText; document.getElementById('span').innerHTML=decodeURI(msg,"UTF-8");

}

}

//若为post请求时要设置请求头信息

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

//发送请求

xmlhttp.send("text=sa123&num=123");

//若为get请求时

//xmlhttp.send(null);

}

</script>

3,自己封装的异步请求的类(Ajax.js)

/**

 * 封装Ajax异步请求的方法

 */

function $_Ajax(method,url,data,type,callback){

/**

 * method:请求类型(get,post)

 * url:请求路径

 * data:请求參数

 * type:返回数据类型(text,xml)

 * callback:回调函数

 */

var xmlhttp;

if(window.XMLHttpRequest){

xmlhttp = new XMLHttpRequest();

}else if(window.ActiveXObject){

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

}else{

xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

}

xmlhttp.open(method, url, true);

/**

 * 由于不同的页面调用该方法的处理的方式不同

 * 所以要传一个回调函数,谁调用谁去实现

 */

xmlhttp.onreadystatechange=function(){

//假设请求完毕而且没有错误就运行该if语句中的代码

if(xmlhttp.readyState==4 && xmlhttp.status==200){

//推断用户要求返回数据类型

if(type=="text"){

var text = xmlhttp.responseText;

//回调函数

callback(text);

}else if(type=="xml"){

var xml = xmlhttp.responseXML;

callback(xml);

}

}

}

//假设用户的请求是post请求

if(method=="post"){

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

}

//发送请求

xmlhttp.send(data);

}

关于异步请求AJAX的具体解释的更多相关文章

  1. [js开源组件开发]network异步请求ajax的扩展

    network异步请求ajax的扩展 在日常的应用中,你可能直接调用$.ajax是会有些问题的,比如说用户的重复点击,比如说我只希望它成功提交一次后就不能再提交,比如说我希望有个正在提交的loadin ...

  2. 异步请求Ajax(取得json数据)

    异步请求Ajax 没有学习Ajax之前请求数据的时候都是整个页面全部刷新了一次,也就是每次请求都会重新请求所有的资源.但是在很多时候不需要页面全部刷新,仅仅是需要页面的局部数据刷新即可,此时需要发送异 ...

  3. 异步请求Ajax

    AJAX:Asynchronous JS And XML,包括HTML.CSS.JS.DOM.XML.JSON等,客户端技术范畴.主要目标:发起异步请求/响应,实现页面内容的局部刷新,提高浏览体验:实 ...

  4. JavaScrpit中异步请求Ajax实现

    在前端页面开发的过程中,经常使用到Ajax请求,异步提交表单数据,或者异步刷新页面. 一般来说,使用Jquery中的$.ajax,$.post,$.getJSON,非常方便,但是有的时候,我们只因为需 ...

  5. [异步请求]ajax、axios、fetch之间的详细区别以及优缺点

    1.jQuery ajax  $.ajax({ type: 'POST', url: url, data: data, dataType: dataType, success: function () ...

  6. jQuery异步请求ajax()之complete参数详解

    请求完成后回调函数 (请求success 和 error之后均调用).这个回调函数得到2个参数:XMLHTTPRequest) 对象和一个描述请求状态的字符串("success", ...

  7. 异步请求 ajax的使用详解

    https://blog.csdn.net/happyaliceyu/article/details/52381446 可以说是很详细了,赞

  8. 黑马学习AJAX jQuery发送异步请求 $.ajax() $.post() $.get()是在调用方法而不是定义方法

  9. ajax异步请求302分析

    1.前言 遇到这样一种情况,打开网页两个窗口a,b(都是已经登录授权的),在a页面中退出登录,然后在b页面执行增删改查,这个时候因为授权原因,b页面后端的请求肯定出现异常(对这个异常的处理,进行内部跳 ...

随机推荐

  1. linq本质扩展方法+lambda表达式

    string[] names = { "aa","bb","cc","dd"}; /* IEnumerable<s ...

  2. BZOJ 1855: [Scoi2010]股票交易(DP+单调队列)

    1855: [Scoi2010]股票交易 Description 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,lxhgww预测到了未 ...

  3. 【bzoj3295】[Cqoi2011]动态逆序对 线段树套SBT

    题目描述 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序 ...

  4. Python matplotlib 柱状图

    matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中.它的文档相当完备,并且 ...

  5. [暑假集训--数论]hdu1019 Least Common Multiple

    The least common multiple (LCM) of a set of positive integers is the smallest positive integer which ...

  6. 用 config drive 配置网络

    上一节最后问了大家一个问题:如果 subnet 没有开 DHCP,会是怎样一个情况? 在其他条件不变的情况下,cloud-init 依然会完成那 3 个步骤,也就是说网卡还是会被配置成 dhcp 模式 ...

  7. 【HDOJ5520】Number Link(费用流)

    题意:NxM的格子有些上面有数字,现在要把奇数跟偶数配对连起来,其他的格子连成一个个回路, 单独的相邻两个格子相连也算是一个回路按两条边算,连线不能相交, 给出相邻两个格子相连的费用,求最小的总费用, ...

  8. 从数据库的表导出到Excel表格中【让客户端下载的Excel】

    原文发布时间为:2008-10-11 -- 来源于本人的百度文章 [由搬家工具导入] 这个例子是从gridview中导出到Excel,可以举一反三,可以直接从数据库中取值放在DataSet中,然后再从 ...

  9. Codeforces 920D Tanks

    题目链接 题意 有 \(n\) 个容积无限的水缸,初始时水量为\(a_1,a_2,...,a_n\),有一把容积为\(k\)的勺子,可以从一个水缸中舀水倒入另一个水缸中.问能否给出操作序列,使得最终某 ...

  10. android中与Adapter相关的控件----ViewFlipper

    ViewFlipper(翻转视图) 一.ViewFlipper是一个多页面管理的控件,与ViewPager不同,ViewPager的是一页一页的的,而ViewFlipper则是一层一层的.图片轮播或者 ...