From 7861a9c0c5ba2fdb9974cb95eda827282cfa828b Mon Sep 17 00:00:00 2001 From: Dongsen Date: Sun, 22 Aug 2021 18:32:17 +0800 Subject: Update Web/API/XMLHttpRequest/responseType, zh-CN (#2176) --- .../web/api/xmlhttprequest/responsetype/index.html | 98 ++++++++++++++++------ 1 file changed, 71 insertions(+), 27 deletions(-) (limited to 'files') diff --git a/files/zh-cn/web/api/xmlhttprequest/responsetype/index.html b/files/zh-cn/web/api/xmlhttprequest/responsetype/index.html index c270b2f109..7201946aae 100644 --- a/files/zh-cn/web/api/xmlhttprequest/responsetype/index.html +++ b/files/zh-cn/web/api/xmlhttprequest/responsetype/index.html @@ -2,44 +2,88 @@ title: XMLHttpRequest.responseType slug: Web/API/XMLHttpRequest/responseType tags: - - XMLHttpRequest.responseType + - AJAX + - API + - HTTP + - HTTP Response + - HTTP Response Type + - Property + - Reference + - Response + - XHR + - XMLHttpRequest + - responseType translation_of: Web/API/XMLHttpRequest/responseType +browser-compat: api.XMLHttpRequest.responseType --- -

{{APIRef('XMLHttpRequest')}}

+
{{APIRef('XMLHttpRequest')}}
-

XMLHttpRequest.responseType 属性是一个枚举类型的属性,返回响应数据的类型。它允许我们手动的设置返回数据的类型。如果我们将它设置为一个空字符串,它将使用默认的"text"类型。

+

{{DOMxRef("XMLHttpRequest")}} 属性 responseType 是一个枚举字符串值,用于指定响应中包含的数据类型。

-

在工作环境(Work Environment)中将responseType的值设置为"document"通常会被忽略. 当将responseType设置为一个特定的类型时,你需要确保服务器所返回的类型和你所设置的返回值类型是兼容的。那么如果两者类型不兼容呢?恭喜你,你会发现服务器返回的数据变成了null,即使服务器返回了数据。还有一个要注意的是,给一个同步请求设置responseType会抛出一个InvalidAccessError 的异常。

+

它还允许作者更改响应类型。如果将 responseType 的值设置为空字符串,则会使用 text 作为默认值。

-

responseType支持以下几种值:

+

语法

-

{{page("/zh-CN/docs/Web/API/XMLHttpRequestResponseType", "取值")}}

+
var type = XMLHttpRequest.responseType;
 
-

规范

+XMLHttpRequest.responseType = type;
- - - - - - - - - - - - - -
规范状态注释
{{SpecName('XMLHttpRequest', '#the-responsetype-attribute')}}{{Spec2('XMLHttpRequest')}}WHATWG living standard
+

-

浏览器兼容性

+

{{JSxRef("Global_Objects/String")}} 类型的值,指定响应包含的数据类型。它可以采用以下值:

-

{{Compat("api.XMLHttpRequest.responseType")}}

+
+
""
+
空的 responseType 字符串与默认类型 "text" 相同。
+
"arraybuffer"
+
{{DOMxRef("XMLHttpRequest.response", "response")}} 是一个包含二进制数据的 JavaScript {{JSxRef("ArrayBuffer")}}。
+
"blob"
+
{{DOMxRef("XMLHttpRequest.response", "response")}} 是一个包含二进制数据的 {{DOMxRef("Blob")}} 对象。
+
"document"
+
{{DOMxRef("XMLHttpRequest.response", "response")}} 是一个 {{Glossary("HTML")}} {{DOMxRef("Document")}} 或 {{Glossary("XML")}} {{DOMxRef("XMLDocument")}},根据接收到的数据的 MIME 类型而定。请参阅 HTML in XMLHttpRequest 中的 HTML,了解有关使用 XHR 获取 HTML 内容的更多信息。
+
"json"
+
{{DOMxRef("XMLHttpRequest.response", "response")}} 是通过将接收到的数据内容解析为 {{Glossary("JSON")}} 而创建的 JavaScript 对象。
+
"text"
+
{{DOMxRef("XMLHttpRequest.response", "response")}} 是 {{DOMxRef("DOMString")}} 对象中的文本。
+
"ms-stream" {{non-standard_inline}}
+
{{DOMxRef("XMLHttpRequest.response", "response")}} 是流式下载的一部分;此响应类型仅允许用于下载请求,并且仅受 Internet Explorer 支持。
+
-

了解更多

+
+

responseType 设置为特定值时,作者应确保服务器实际发送的响应与该格式兼容。如果服务器返回的数据与设置的 responseType 不兼容,则 {{DOMxRef("XMLHttpRequest.response", "response")}} 的值将为null .

+
+ +

异常

+ +
+
InvalidAccessError
+
试图更改 XMLHttpRequestresponseType,该值处于同步模式但不在 {{DOMxRef("Worker")}} 中。有关其他详细信息,请参阅下面的 {{anch("Synchronous_XHR_restrictions", "同步 XHR 限制")}}。
+
+ +

使用说明

+ +

同步 XHR 限制

+ +

您不能在同步XMLHttpRequest 中更改 responseType 的值,除非请求属于 {{DOMxRef("Worker")}}。此限制部分旨在帮助确保同步操作不会用于阻塞浏览器主线程的大型事务,从而阻碍用户体验。

+ +

XHR 请求默认是异步的;它们仅通过在调用 {{DOMxRef("XMLHttpRequest.open", "open()")}} 时将 false 作为可选async 参数的值传递来置于同步模式。

+ +

Worker 中的限制

+ +

在 {{DOMxRef("Worker")}} 中尝试将 responseType 的值设置为 document 时会被忽略。

+ +

规范

+ +{{Specifications}} + +

浏览器兼容性

+ +

{{Compat}}

+ +

相关链接

-- cgit v1.2.3-54-g00ecf