我的HTML 5上传不会发现错误

时间:2012-02-27 18:59:48

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

我的上传实际上运行正常。代码是

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方法。

1 个答案:

答案 0 :(得分:0)

愚蠢的问题,但是你的MVC控制器(或相关的处理程序)实际设置了http代码吗?我一直在使用HandleJsonExceptionAttribute类,当通过控制器方法的属性设置时,我发现将 JSON错误错误作为JSON传递,并且因为它在其{显式设置HTTP代码{1}}。如果您没有在控制器方法上添加一些特殊属性,抱歉,没关系。