通过 IFrame 更新文件时的错误处理
Error Handling while File Updoading via an IFrame
我的应用程序的步骤是:
- 客户端通过复选框选择多个文件,
- 使用文件的标识符形成请求,
- 客户端通过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 中捕获接收响应的事件]
请分享有关此问题的到期时间。
更新
如果我发送
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "testMessage");
错误的响应响应到达,但 makeSaveFrame() 方法周围的 try/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 参数会终止失败回调。因此,当服务器以错误的响应响应进行响应时,不会出现错误处理程序(失败回调)。
既然你已经更新了你的问题并且不再使用框架来请求内容,你可以使用 jquery,它可以类似于你更新的内容(最后是 ExtJS4 部分),
$.ajax({
url: 'requestURL',
form: uploadForm.serialize(),
method: 'post',
error : function(jqXHR, textStatus, errorThrown) {
// you can check the jqXHR object properties & methods to check
// the response status and contentType
alert("An error occured.");
}
});
希望这有帮助。有关 Jquery AJAX 请求的更多选项,请遵循 JQuery 参考
P.S:您需要将其他jquery库文件添加到您的页面。
请看这个北极。似乎可以在上传后操作内容,以便可以对其应用处理程序。不幸的是,我有 2 个问题:
-
在IE中,打开2个窗口,下载文件后第二个窗口(iframe)没有关闭(在FF中工作正常)
-
当响应到达时,内容总是空的,我无法估计它。
下一个想法是从响应标头(iframe)获取cookie。这个解决方案似乎很有前途...
相关文章:
- javascript:如何在antlr生成的Lexer中进行错误处理
- 生成pdf或其他非html文件时的错误处理
- sailsjs在创建两个模型时的错误处理
- 为什么没有调用我的流错误处理程序
- 错误处理try&catch+回调
- EventSource中的错误处理
- Angular JS中的通用Ajax错误处理-拦截器
- Sinon Mocha节点错误处理
- 如果文件不存在,fs.watch是否有错误处理程序
- Javascript初始化和错误处理
- AngularJS错误处理:根据错误数组显示错误
- JQuery 图像错误处理
- BreezeJS中央错误处理程序和自动重试
- 文件下载html与错误处理FileNotFound
- 使用mongoose保存多个文档时的错误处理
- Node.js如何知道回调的第一个参数是否是错误处理程序
- Meteor JavaScript-错误处理
- AJAX自定义错误处理代码问题
- 正在获取丢失的错误处理程序套接字消息,无法读取属性'timerID'使用Node.js和Socket.i
- 为什么不't JavaScript库使用错误处理