【问题标题】:My HTML 5 upload doesn't catch errors我的 HTML 5 上传没有发现错误
【发布时间】:2012-02-27 18:59:48
【问题描述】:

我的上传实际上工作正常。代码是

var data = new FormData(document.getElementById("upload-form"));
var xhr = new XMLHttpRequest();

xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);

xhr.open("POST", postUrl, true);
xhr.send(data);

我的uploadProgress 方法会按原样触发。我的uploadComplete 在上传成功时工作,但是当出现错误时,它仍然会触发而uploadFailed 不会。 FireBug 显示服务器正在响应异常消息,所以我不确定为什么 load 会触发 error

function uploadComplete(e) {
  window.location.href = redirectUrl;
}

function uploadFailed(e) {
  alert("There was an error uploading the file.");
}

为了简化测试,我将 ASP.NET MVC 控制器操作修改为

throw new ApplicationException("Error");

我做错了什么?如果在控制器上引发异常,我希望触发 uploadFailed 方法。

【问题讨论】:

  • 我添加了同样的问题,必须检查 uploadComplete 内的 HTTP 响应代码才能知道它是否成功。

标签: jquery asp.net-mvc html exception-handling


【解决方案1】:

愚蠢的问题,但是您的 MVC 控制器(或相关处理程序)是否真的设置了 http 代码?我一直在使用HandleJsonExceptionAttribute 类,当它通过控制器方法上的属性设置时,我发现它会将 JSON 错误 错误作为 JSON 传递,并且因为它在其public override void OnActionExecuted(ActionExecutedContext filterContext) 中显式设置 HTTP 代码.如果您没有在控制器方法中添加一些特殊属性,对不起,没关系。

【讨论】:

  • 我没有设置 StatusCode。当我抛出异常时,它已经被设置为 HTTP 500。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 2021-06-10
相关资源
最近更新 更多