我需要使用JQuery ajax将复杂且敏感的数据对象(嵌套对象,数组和个人身份信息)发布到我的服务器,在那里生成PDF并将其返回给客户端。然后,客户端浏览器应在新窗口中打开PDF。
由于数据的性质,请求既不能也不应该是编码的URL - 它必须将数据包含为JSON主体。
关于这个问题的其他问题/答案并没有解决我的问题或者没有完全解决问题。
答案 0 :(得分:1)
<强>解决方案强>
Content-Type
设置为arraybuffer
(在客户端和服务器上)。Blob
。Blob
的对象网址,然后在新窗口中打开它。备注强>
arraybuffer
Content-Type
因此必须使用基本JavaScript xhr
(如果您没有其他选项)。Blob
的功能,因此需要特殊情况。<强>代码强>
RequestPdf = function (url, data) {
var request = new XMLHttpRequest(), file, fileURL;
request.open("POST", url);
request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
request.responseType = "arraybuffer";
request.send(data);
request.onreadystatechange = function () {
if (request.readyState === 4 && request.status === 200) {
file = new Blob([request.response], { type: 'application/pdf' });
if (window.navigator && window.navigator.msSaveOrOpenBlob) { // IE
window.navigator.msSaveOrOpenBlob(file);
} else {
fileURL = URL.createObjectURL(file);
window.open(fileURL);
}
}
};
};
&#13;