天天看點

XMLHttpRequest中的response和responseText差別

首先明白一點,xhr(XMLHttpRequest),這個對象,代表着http協定規範在用戶端js中的實作。

http規範,直白點說,就是http請求中的資料傳輸規範還有其他一些标準。無論是什麼語言,什麼地方的http實作,本質上,都是tcp之上的滿足http規範的資料傳輸。

在web前端,一次http請求,對應着一個xhr執行個體(基本的面向對象概念)。

這個xhr執行個體上,就可以取到http協定中規定的各種協定屬性。本質上,所有的請求響應封包的主體,都是二進制的資料,我們傳輸的文本内容,也是編碼好的二進制資料。

http規範中規定了一個Content-type頭,用來指明資料主體的格式,來告訴收發的兩端将二進制的資料主體按照什麼類型進行解析。而這兩個接口(response和responseText),其實隻是提供了一些便捷的接口,配合responseType,友善使用者擷取到解析好的響應,省去手動解析響應主體的步驟。

如果你想詳細了解的話,其實你需要去了解下資料傳輸時候的編碼和解碼。不同mime type的資料,傳輸時候的編碼方式是不同的。

普通的文本(text/plain),就是編碼好的字串,這兩個接口上都可以直接讀取。