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