我有一个必须与 IE7 一起使用的 Web 应用程序(是的,我知道..),其中前端完全由 ExtJS4 制成,并且有一个用于下载文件的 servlet。要下载文件,我发送了一些参数,所以我不能简单地使用location.href
. 它必须是 POST。
到目前为止它可以工作,但是当 servlet 中引发异常时,我不知道如何处理它以向用户显示一些警报框或一些消息,而无需重定向到另一个页面。
在我的 webapp 中,我也使用 DWR 并且我知道该openInDownload()
功能,但它会在 IE 中触发安全警告。
所以,(终于!)问题是
使用此代码:
post = function (url, params) {
var tempForm=document.createElement("form");
tempForm.action=url;
tempForm.method="POST";
tempForm.style.display="none";
for(var x in params) {
// ...snip boring stuff to add params
}
document.body.appendChild(tempForm);
tempForm.submit();
return tempForm;
}
提交后是否可以留在同一页面?
或与另一个:
Ext.Ajax.request({
url: './descargaArchivoNivs',
method: 'POST',
autoAbort: true,
params: {
nivs: jsonData
},
success: function(response){
// HERE!!
// i know this is wrong
document.write('data:text/plain,' + response.responseText );
/* this looked promising but a warning pops up
var newwindow = window.open();
newwindow.document.open();
newwindow.document.write('data:text/plain, ' + response.responseText );
newwindow.document.close();*/
},
failure: function(resp){
alert('There was an error');
}
});
是否可以打开// HERE!!
包含response
内容的文件下载对话框?
还是有其他方法可以在成功时打开文件下载对话框,并在失败时显示友好消息而不会丢失用户输入(POST 的参数)?
(对不起,如果这篇文章太长了)