I have a use case where I expect the response to be a binary blob file (actual response Content-Type: application/pdf), and am able to make it work with this code (where showFile handles processing and downloading the returned blob/file):
canAjax({
url: assembleUrl,
data: assembleData,
type: 'post',
contentType: 'application/x-www-form-urlencoded',
dataType: null,
xhrFields: {
responseType: 'blob' // pdf file
}
}).then((xhrObj) => {
// blob file is on xhr.response
showFile(xhrObj.response)
})
This works despite xhrObj.responseText showing:
responseText: [Exception: DOMException: Failed to read the 'responseText' property from 'XMLHttpRequest':
The value is only accessible if the object's 'responseType' is '' or 'text' (was 'blob').
I have a use case where I expect the response to be a binary blob file (actual response
Content-Type: application/pdf
), and am able to make it work with this code (whereshowFile
handles processing and downloading the returned blob/file):This works despite
xhrObj.responseText
showing:This code/switch statement should be updated to handle binary file response types, probably just returning
xhr.response
instead of the whole object: https://github.com/canjs/can-ajax/blob/c4e4c2691dc9a5255614118d346d1cb5fa078afb/can-ajax.js#L112-L114