AJAX接收服务器返回的数据

readyState 和 status 属性
readyState 属性保存有 XMLHttpRequest 对象的交互状态,从 0 到 4 变化:

  • 0 :未初始化(还没有调用send()方法);
  • 1:载入(已调用send()方法,正在发送请求);
  • 2:载入完成(send()方法执行完成,已经接收到全部响应数据);
  • 3:交互(正在解析响应数据);
  • 4:完成(响应数据解析完成,可以在客户端调用了)。

status 属性保存有 XMLHttpRequest 对象与后台交互时服务器返回的一个状态码。例如:

  • 200:OK,请求发送成功;
  • 404:未找到页面。

注意:readyState 和 status 的含义不同,readyState 是XMLHttpRequest 对象的交互状态,共有 5 个状态,与服务器无关;status 是服务器返回的一个状态码,表示服务器的响应结果,例如,200 表示服务器响应成功,404 表示请求的文件在服务器上不存在。

AJAX 请求成功,xmlhttp.readyState=4,xmlhttp.statue=200,代码:

  1. if(xmlhttp.readyState==4&& xmlhttp.status==200){
  2. // AJAX 请求成功,处理响应数据
  3. }
 
 

事件句柄 onreadystatechange

onreadystatechange 是一个事件句柄,存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。

当发送一个 AJAX 请求后,客户端无法确定请求何时完成,所以需要用事件机制来捕获请求的状态,即 readyState 的值,onreadyStateChange 实现了这一功能。

注意: onreadystatechange 事件被触发 5 次(0 - 4),对应着 readyState 的每个变化。

如下代码所示:

  1. xmlhttp.onreadystatechange=function(){
  2. // 每次改变 readyState,都会调用该方法
  3. if(xmlhttp.readyState==4&& xmlhttp.status==200){
  4. // AJAX 请求成功,处理响应数据
  5. }
  6. }
 

接收响应数据

接收来自服务器的响应数据,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。

属性 描述
responseText 将响应数据作为字符串解析。
responseXML 将响应数据作为 XML 解析。

例如,将服务器返回的数据更新到 id="demo" 的节点:

  1. document.getElementById("demo").innerHTML=xmlhttp.responseText ;
 

注意:服务器返回的数据一般作为字符串来解析,很少作为 XML 来解析,这里不再讲述 responseXML 。

到此,我们终于可以实现一个完整的 AJAX 请求了。

下面的代码展示了如何获取客户端 IP 地址:

  1. <script type="text/javascript">
  2. var xmlhttp;
  3. // 创建 XMLHttpRequest 对象
  4. try{
  5. // code for IE7+, Firefox, Chrome, Opera, Safari
  6. xmlhttp=newXMLHttpRequest();
  7. }catch(e){
  8. // code for IE6, IE5
  9. xmlhttp=newActiveXObject("Microsoft.XMLHTTP");
  10. }
  11. xmlhttp.onreadystatechange=function(){
  12. if(xmlhttp.readyState==4&& xmlhttp.status==200){// 响应成功
  13. document.getElementById("demo").innerHTML=xmlhttp.responseText;
  14. }
  15. }
  16. xmlhttp.open("POST","/demo/javascript/ajax/ajaxDemo.php?action=getIP",true);
  17. xmlhttp.send();
  18. </script>
 

注意:onreadystatechange 需要在请求发送之前设定,编写代码时,要写在 open() 和 send() 之前。

【04】AJAX接收服务器返回的数据的更多相关文章

  1. Ajax接收服务器返回的信息response

    Ajax可以向服务器发起请求,有去的方式,那么久必然可疑返回. 服务器返回的信息也可以通过Ajax接收. Ajax共有5种状态: 1.创建对象,没有调用open方法 2.对象发起请求http,已经调用 ...

  2. json 解析double类型多出几位小数,利用NSDecimalNumber修复 , 服务器返回的数据,用数据类型接收(int,NSNumber)?

     后台返回float类型数据8.2,实际用AFN的json解析后得到8.1999999999,该怎么处理呢? 开发中处理处理价格金额问题, 后台经常返回float.double类型, 打印或转成NSS ...

  3. ajax接收php返回得到一堆html代码

    ajax接收php返回得到一堆html代码 一.      错误代码: <font size='1'><table class='xdebug-error xe-notice' di ...

  4. 使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析

    使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析 因为我在前台使用了jquery的text()方法,而不是html ...

  5. ajax接收处理json格式数据

    ajax在前后端的交互中应用非常广泛,通过请求后台接口接收处理json格式数据展现在前端页面. 下面我们来简单用 ajax在本地做一个接收并处理json的小例子 首先我们要新建一个叫做data的jso ...

  6. loadrunner关联——对服务器返回的数据选择性提交

    在跟进项目的过程中,才体会到自己之前闷头看书再写小小的测试程序验证的学习方式很没有效率,知道动态关联,却也只是会参数化式的动态关联,这种关联是我们预先知道要提交的数据而进行的关联:更高一级的可能就是使 ...

  7. 服务器返回的数据将Unicode码转成汉字

    当我们请求接口的时候,服务器会返回一些数据,当我们打印的时候就会发现,打印出来的是unicode码,不是汉字. 这时候需要我们自己手动处理一下,让打印的时候输出汉字的格式. 方法如下: 新增一个分类, ...

  8. 巧用ajax请求服务器加载数据列表时提示loading

    我们利用weui.js中的weui.loading为效果,ajax的beforeSend与complete方法,做一个加载数据时会有几秒的 loading... 要在页面需要加载的JS文件: < ...

  9. ASP.Net MVC 在ajax接收controller返回值为Json数据

    首先,再次回忆一下ajax的标准用法:(这张图写的比较详细了)(转) 页面部分ajax代码: $.ajax({            url: "/Home/Login?account=&q ...

随机推荐

  1. ACMer需要的 java基本知识

    1.基本定义 import java.util.*; import java.io.*; public class Main { public static void main(String[] ar ...

  2. 169 Majority Element 求众数 数组中出现次数超过一半的数字

    给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素.你可以假设数组是非空的,并且数组中的众数永远存在. 详见:https://leetcode.com/p ...

  3. 等待进程结束函数中的BUG

    偶然发现一个BUG,有一个函数是这样写的: void WaitProcExit(DWORD dwPid) { HANDLE hProcess = OpenProcess(PROCESS_ALL_ACC ...

  4. 程序猿工具——svn

    一个项目的产生,都需要团队中的开发人员互相协作.它的简单,方便深深吸引了我. svn的使用,有2部分组成--svn服务器.svn客户端.svn服务器一般团队之间只要有一个安装就可以了. 在学习安装sv ...

  5. java封装的优点

    在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机 ...

  6. P1603 斯诺登的密码

    题目背景 根据斯诺登事件出的一道水题 题目描述 题目描述 2013年X月X日,俄罗斯办理了斯诺登的护照,于是他混迹于一架开往委内瑞拉的飞机.但是,这件事情太不周密了,因为FBI的间谍早已获悉他的具体位 ...

  7. CentOS7.5搭建LAMP环境

    导言 LAMP环境搭建,网上可以搜到很多的结果.为什么我还要整理一下呢,是因为有些网上给出的解决办法可能仅适用于某些特定的环境下,并不一定适用于所有出现问题的情况. 当然我写本篇的目的也不是保证所有的 ...

  8. Git ---创建和切换分支

    ······································································"天下武功,唯快不破" git分支: g ...

  9. Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库上下文

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置文件 下一篇:Farseer.net轻量级ORM开源 ...

  10. CAD交互绘制样条线(com接口)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数.详细说明如 ...