【04】AJAX接收服务器返回的数据

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() 之前。

时间: 2024-10-26 12:57:31

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

AJAX MVC 服务器返回Json数据,客户端获取Json数据

<> 控制器 Controller using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Script.Serialization; namespace MvcApplication2.Controllers { public class HomeController : Controller { pu

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

Ajax可以向服务器发起请求,有去的方式,那么久必然可疑返回. 服务器返回的信息也可以通过Ajax接收. Ajax共有5种状态: 1.创建对象,没有调用open方法 2.对象发起请求http,已经调用open方法,尚未调用send方法 3.向服务器发起请求 4.从服务器返回信息 5.信息返回完毕 readyState属性(0,1,2,3,4) 侦测Ajax状态: 对象有一个onreadystatechange,可以侦测当前ajax请求的状态(1,2,3,4) Ajax接收返回信息: Ajax有四

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

ajax接收php返回得到一堆html代码 一.      错误代码: <font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'> <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-

loadrunner中对服务器返回的数据选择性提交

在跟进项目的过程中,才体会到自己之前闷头看书再写小小的测试程序验证的学习方式很没有效率,知道动态关联,却也只是会参数化式的动态关联,这种关联是我们预先知道要提交的数据而进行的关联:更高一级的可能就是使用loadrunner自带的自动关联,对jsessionid和DSId进行关联,除此之外一无所知. 在项目中碰到的情况是:对输入框A进行参数化,假定当前参数数据为a1,参数化之后点击“查询”按钮,Server 返回a1的数据,选中a1进行提交.在这个过程中,根据参数不同Server返回的数据不同,且

怎样获取从服务器返回的数据体

使用: xhr.response 属性, 可获得response body 内的数据, 注意, 这些数据类型不一样, 比如字符串 / 对象 / 二进制文件 等. var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { handler(xhr.response); } } 注意: 1. 如果返回的是xml或html, xhr.response会自动解析成网页

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

当我们请求接口的时候,服务器会返回一些数据,当我们打印的时候就会发现,打印出来的是unicode码,不是汉字. 这时候需要我们自己手动处理一下,让打印的时候输出汉字的格式. 方法如下: 新增一个分类,在分类中,重写描述的方法,如下: /** * 集合类型打log */ @implementation NSArray (log) - (NSString *)description{ return [self descriptionWithLocale:nil]; } - (NSString *)d

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

我们利用weui.js中的weui.loading为效果,ajax的beforeSend与complete方法,做一个加载数据时会有几秒的 loading... 要在页面需要加载的JS文件: <script src="../js/libs/weui.min.js"></script> 可以去weui的文档中下载,这是它的demo:   https://weui.io/weui.js/ 这里主要讲jQuery ajax的get,查询数据时,它的结构为: $.aja

AJAX MVC server返回Json数据,client获取Json数据

<> 控制器 Controller using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Script.Serialization; namespace MvcApplication2.Controllers { public class HomeController : Controller { pu

ajax https请求返回json数据

怎么获取通过ajax请求的html代码:http://zhidao.baidu.com/link?url=Vk7mfepx1tNOp6DAy7KYY_wcUlKQxwwGpmCmct3akDwyXt5P8IIbzY_bLqABCUDFHFtbZs90jmYG11iN5APMKR-T7Acvix9A_DDcOpJA9lu http://www.iteye.com/problems/84999