为新窗口javascript加载内容时捕获错误响应
我有一个输入元素,它触发一个带有呈现pdf的弹出窗口。但是,在某些情况下,生成此pdf将失败。我希望在原始窗口中捕获结果错误,并仅在请求成功时呈现弹出窗口。如果我提出两个请求,那么这样做很简单:为新窗口javascript加载内容时捕获错误响应,javascript,ajax,pdf,data-uri,Javascript,Ajax,Pdf,Data Uri,我有一个输入元素,它触发一个带有呈现pdf的弹出窗口。但是,在某些情况下,生成此pdf将失败。我希望在原始窗口中捕获结果错误,并仅在请求成功时呈现弹出窗口。如果我提出两个请求,那么这样做很简单: $.ajax({ method: 'GET', url: url, success: function() { window.open(url); }, error: function() { ... } }); 但是,我
$.ajax({
method: 'GET',
url: url,
success: function() {
window.open(url);
},
error: function() {
...
}
});
但是,我想避免第二个请求,因为这一代pdf非常昂贵。我目前尝试了以下方法:
创建空窗口,将pdf写入DOM,pushState
success: function(r) {
var w = window.open('application/pdf');
w.docuent.write(r);
w.history.pushState('init', 'A PDF!', url);
}
success: function(r) {
var w = window.open('data:application/pdf,' + escape(r));
w.history.pushState('init', 'A PDF!', domain + url);
}
这会失败,因为r包含PDF bytestring
用bytestring打开一个窗口,然后按state
success: function(r) {
var w = window.open('application/pdf');
w.docuent.write(r);
w.history.pushState('init', 'A PDF!', url);
}
success: function(r) {
var w = window.open('data:application/pdf,' + escape(r));
w.history.pushState('init', 'A PDF!', domain + url);
}
由于pushState覆盖初始流数据,因此此操作失败
如何使用呈现的PDF创建一个新窗口,而不使用任何外部库(使用响应数据的jquery除外),然后正确设置其url