我的應用程序的步驟是:錯誤處理,同時通過iframe文件Updoading
- 一個客戶端通過複選框選擇多個文件,
- 請求與文件的標識符形成,
- 客戶端下載通過iframe存檔:(一服務器發現這些文件,拉鍊它們,然後,形成含有zip存檔的字節響應)
這裏是iframe的代碼:
function makeSaveFrame(urlToServer) {
var ifrm = document.createElement("IFRAME");
ifrm.setAttribute("style", "display:none;");
ifrm.setAttribute("src", 'urlToServer';
ifrm.style.width = "0px";
ifrm.style.height = "0px";
document.body.appendChild(ifrm);
}
響應的類型和標題:
response.setContentType("application/zip");
response.setHeader("Content-Disposition", "attachments; filename=\"" + fileName + ".zip\"");
的問題是:如果出現問題,我需要一個理由發送到客戶端。就我而言,錯誤消息必須是JSONObject類型。
[如果在服務器上發生錯誤,我可以更改響應的內容類型併發送JSONObject,但我不知道如何過濾響應,甚至不知如何捕獲接收響應的事件iframe]
請在這個問題上分享一個expirience。
UPDATE
如果我送
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "testMessage");
的不良反應響應到達,但儘量/周圍makeSaveFrame()方法catch塊不會趕上這一點。
UPDATRE 我已經試過這
var uploadForm = document.createElement('form');
uploadForm.name = 'uploadForm';
uploadForm.setAttribute("style", "display:none;");
document.body.appendChild(uploadForm);
Ext.Ajax.request({
url: 'requestURL',
form: uploadForm.getForm().getEl(),
isUpload : true,
method: 'post',
failure : function() {
Ext.MessageBox.show({
title : 'title',
msg : 'message',
buttons : Ext.MessageBox.OK
});
}
});
但isUpload參數殺死一個失敗的回調。因此,當服務器迴應錯誤響應響應時,不會出現錯誤處理程序(失敗回調)。
作爲一個方面說明:'ifrm.style.width =「0px」;'會比連接更簡單...只是說' – RomainVALERI
是否有理由使用iframe ?你能否定期提交表格? – dbrin
我不確定如何在表單提交後獲得回覆。無論如何,問題是如何管理不同類型的響應 – Dmitry