前言
JQuery Mobile的请求基本上都是通过Ajax来完成的,但是ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的,文件的下载是以二进制形式进行的也就是流,ajax是不能返回的,虽然可以读取到返回的response,但只是读取而已,是无法执行的。
解决方案,不用ajax:
使用XHR 全称:XMLHttpRequest
废话不多说直接上代码吧:
1. 前端请求
function downloadAttachments(attachmentId) {
var url = 'http://localhost/KRISADMIN/downloadAttachment';
var xhr = new XMLHttpRequest();
xhr.open('POST', url);// 也可以使用POST方式,根据接口,也可以写get
xhr.responseType = "arraybuffer";
// 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
xhr.onload = function () {
// 请求完成
if (this.status === 200) {
// 返回200
var blob = new Blob([this.response], {type: "application/octet-stream"});
var reader = new FileReader();
reader.readAsDataURL(