Ajax之响应解码

简介: 我们接收到的响应主体类型可以是多种形式的,包括字符串 String、ArrayBuffer 对象、二进制 Blob 对象、JSON 对象、JavaScript 文件以及表示 XML 文档的 Document 对象等。下面将针对不同的主体类型,进行相应的响应解码。

前言


我们接收到的响应主体类型可以是多种形式的,包括字符串 String、ArrayBuffer 对象、二进制 Blob 对象、JSON 对象、JavaScript 文件以及表示 XML 文档的 Document 对象等。下面将针对不同的主体类型,进行相应的响应解码。


正文


属性


在介绍响应解码之前,要先了解一下 XHR 对象的属性。一般地,如果接收的数据是字符串,使用 responseText 即可,这也是最常用的用于接收数据的属性。但如果获取了其他类型的数据,使用 responseText 可能就不太合适了。


  1. responseText
    该属性返回从服务器接收到的字符串,该属性只读。如果本次请求没有成功或者数据不完整,该属性就会等于 null。如果服务器返回的数据格式是 JSON、字符串、JavaScript或者XML,都可以使用 responseText 属性。
  2. response
    该属性只读,返回接收到的数据体。它的类型可以是 ArrayBuffer、Blob、Document、JSON对象、或者字符串,这由 XMLHttpRequest.responseType 属性的值决定。如果本次请求没有成功或者数据不完整,该属性就会等于 null。(IE 9 浏览器不支持)
  3. responseType
    该属性用来指定服务器返回数据(xhr.response)的类型。
  • "":字符串(默认值)
  • "arraybuffer":ArrayBuffer 对象
  • "blob":Blob 对象
  • "document":Document 对象
  • "json":JSON 对象
  • "text":字符串
  1. responseXML
    该属性返回从服务器接收到的 Document 对象,该属性为只读。如果本次请求没有成功,或者数据不完整,或者不能被解析为 XML 或 HTML,该属性等于 null
  2. overrideMimeType()
    该方法用来指定服务器返回数据的 MIME 类型。该方法必须在 send() 之前调用。传统上,如果希望从服务器取回二进制数据,就要使用这个方法,人为将数据类型伪装成文本数据。但是,这种方法很麻烦,在 XMLHttpRequest 版本升级以后,一般采用指定 responseType 的方法。


字符串


如果服务器返回的结果是一个字符串,则直接使用 responseText 属性解析即可。

直接调用 ajax()。

<button id="btn">取得响应</button>
<div id="result"></div>
<script>
  btn.onclick = function() {
    ajax({
      url: "./example.php",
      method: "GET",
      timeout: 30000,
      headers: {
        "Content-Type": "application/x-www-form-urlencoded"
      },
      success: function(res) {
        // result 假设为 id 为 result 的节点
        result.innerHTML = res;
      },
      fail: function(err) {
        console.log("request fail: ", err);
      }
    });
  };
</script>

<?php
    // 设置页面内容的 html 编码格式是 utf-8,内容是纯文本
    header("Content-Type: text/plain;charset=utf-8");    
    echo '你好,世界';
?>


JSON


使用 ajax 最常用的传输方式就是 JSON 字符串,直接使用 responseText 属性解析即可。

// 此处省略一万行代码
ajax({
  success: function(res) {
    var data = JSON.parse(res);  
  }
})


JS

使用 ajax 也可以接收 js 文件。仍然使用 responseText 来接收数据,但要使用 eval() 来执行代码。

// 此处省略一万行代码
ajax({
  success: function(res) {
    eval(res);
  }
})


目录
相关文章
|
13天前
|
JSON 前端开发 数据库连接
AJAX响应状态
【10月更文挑战第29天】了解和正确处理各种AJAX响应状态码是开发高效、稳定的Web应用程序的重要环节。通过对不同状态码的判断和相应处理,可以为用户提供更好的交互体验,确保应用程序在各种情况下都能正确地响应用户的操作。
|
13天前
|
XML 前端开发 JavaScript
|
3月前
|
前端开发 JavaScript UED
🎬JSF 与 Ajax:打造瞬间响应的魔法界面!🚀 用户输入即刻,数据交互如梦幻泡影般呈现!
【8月更文挑战第31天】在现代Web应用中,异步数据交互是提升用户体验的关键。JavaServer Faces (JSF) 作为标准Java Web框架,结合Ajax技术,可轻松实现页面异步更新与数据交互。本文通过示例代码介绍如何在JSF中使用Ajax组件(如`f:ajax`)及后端处理方法实现异步功能,并结合JavaScript处理复杂交互,帮助开发者提升Web应用体验。
40 0
|
JSON 前端开发 JavaScript
JavaScript 中使用Ajax进行网络请求响应JSON字符串数据
JavaScript 中使用Ajax进行网络请求响应JSON字符串数据
66 0
|
存储 前端开发 JavaScript
HTTP进阶,Cookie,响应的回报结果含义,ajax,form表单,不同状态码代表的结果
HTTP进阶,Cookie,响应的回报结果含义,ajax,form表单,不同状态码代表的结果
HTTP进阶,Cookie,响应的回报结果含义,ajax,form表单,不同状态码代表的结果
|
前端开发
ajax没有响应问题
ajax没有响应问题
ajax没有响应问题
ajax4-ajax获取服务器端的响应
ajax4-ajax获取服务器端的响应
84 0
ajax4-ajax获取服务器端的响应
|
JSON 前端开发 Java
【Spring MVC】(四)Spring MVC响应视图(字符串的方式、ModelAndView 对象、JSON 数据)、统一异常处理(普通请求、AJAX 请求)
【Spring MVC】(四)Spring MVC响应视图(字符串的方式、ModelAndView 对象、JSON 数据)、统一异常处理(普通请求、AJAX 请求)
513 0
【Spring MVC】(四)Spring MVC响应视图(字符串的方式、ModelAndView 对象、JSON 数据)、统一异常处理(普通请求、AJAX 请求)
|
JSON 前端开发 数据格式
Ajax服务端响应JSON数据
Ajax服务端响应JSON数据
118 0
Ajax服务端响应JSON数据
|
XML 缓存 开发框架
AJAX学习笔记(四、请求与响应)
AJAX学习笔记(四、请求与响应)
165 0
AJAX学习笔记(四、请求与响应)