Ext JS 4的文件上传和内部服务器错误
Ext JS 4's File Upload and Internal Server Error
在这里,我们再次使用Ext JS。
假设我有一个文件上传(Ext.form.field.File)字段,该字段将图像提交到应用程序的Web服务器。
每当我在表单提交时收到内部服务器错误(状态代码 = 500)(即:发布的文件大于 Web 服务器的最大请求长度)时,Ext 都会抛出一个异常,该异常显示在浏览器的控制台上。
如果我像这样覆盖 Ext.Error.handle,我可以立即捕获错误:
<!-- language: js -->
Ext.Error.handle = function (err) {
switch (err.sourceClass) {
case "Ext.JSON":
{
var arr = err.msg.split(''n');
var msg = arr[0];
arr.shift();
var serverMsg = arr.join(''n');
LogManager.error(msg);
return true;
}
default:
{
if (err.msg) {
LogManager.error(err.msg);
return true;
}
}
return false;
}
}
问题是无论我是否发现错误,Ext创建的模式进度条仍然显示,这意味着我的应用程序被永久锁定。
问题是:如何使 Ext 触发表单的失败回调并以愉快的方式关闭进度条?
我认为最干净的方法是使用表单提交失败回调来处理内部服务器(500)错误。
有关详细信息,请参阅文档 http://docs.sencha.com/ext-js/4-1/#!/api/Ext.form.Basic-method-submit。
您可以设置 waitMsg 属性,您将看到 Ext 将自动取消正在显示的消息。这样。。。
myFormPanel.getForm().submit({
clientValidation: true,
waitMsg: 'Uploading image...',
url: 'updateConsignment.php',
params: {
newStatus: 'delivered'
},
success: function(form, action) {
Ext.Msg.alert('Success', action.result.msg);
},
failure: function(form, action) {
switch (action.failureType) {
case Ext.form.action.Action.CLIENT_INVALID:
Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');
break;
case Ext.form.action.Action.CONNECT_FAILURE:
Ext.Msg.alert('Failure', 'Ajax communication failed');
break;
case Ext.form.action.Action.SERVER_INVALID: //For your 500
Ext.Msg.alert('Failure', action.result.msg);
}
}
});
我刚刚找到了这个问题的一个肮脏的解决方案,即使用 Ext.Error.handle 处理错误,使用 Ext.Msg 显示错误消息 abd 返回 false。这很棘手。
通过处理错误,我可以检查错误事件并检索一些错误信息。显示错误消息是比较棘手的部分,因为上传的进度条使用 Ext.Msg 后面的相同基础结构,而 Ext.Msg 有一个错误,即它不允许程序员像队列一样调用它,当用户单击"确定"时显示一条消息,然后显示下一条消息。它总是删除前一个并显示新的。如果用户必须决定两条路径,并且问题消息框将简单地消失,则此行为可能会导致可怕的错误!最后,我们返回 false,错误打印在控制台中。如果我们在这一点上返回 true,调用函数将继续执行并导致问题,因为预期的信息很可能不存在。
这个解决方案很棘手,很脏,一点也不令人愉快。它现在对我有用,但我知道我会很快后悔:P
- SignalR:调用集线器方法时出现内部服务器错误
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- 使用javascript API响应内部服务器错误将曲目上传到SoundCloud
- AJAX错误状态代码500内部服务器错误
- Jcrop&画布:裁剪区域的大小很奇怪;500内部服务器错误
- 如果JS会话变量为null,如何避免500内部服务器错误
- POST encodeURI查询字符串内部服务器错误 500
- getJSON:网络错误:500 内部服务器错误
- Node.js:Mongoose内部服务器错误
- 缺少用于创建的模板.内部服务器错误-聚合物表单保存到数据库
- Jquery AJAX Post:500(内部服务器错误)
- CSS和Javascript可以在内部服务器上工作,但不能在外部工作
- 我的联系表格在测试/PHPMailer后给了我一个内部服务器错误(500)
- 500(内部服务器错误)的外部php文件
- 内部服务器错误在 post 请求中使用 Angular js 中的自定义服务
- 内部服务器错误:将 JavaScript 对象传递给 C#
- 为什么我的 rails AJAX 请求会抛出内部服务器错误
- 500 asp.net 内部服务器错误
- 500 内部服务器错误:无法更新猫鼬中的用户
- 在尝试将插入值从javascript调用到Visual Studio中的sql服务器时,收到内部服务器错误500