【发布时间】:2014-06-13 21:34:45
【问题描述】:
我目前正在开发一个需要上传文件输入的项目,我根据我在这个网站上看到的一些示例实现了该输入,它工作正常。
function send(file){
var fd = new FormData();
fd.append(file.name, file);
$.ajax({
url: 'upload',
type: 'POST',
enctype: "multipart/form-data",
xhr: function xhr() {
myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) {
myXhr.upload.addEventListener('progress', function(evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
percentComplete = parseInt(percentComplete * 100, 10);
progress.setValue(percentComplete);
}
}, false);
}
return myXhr;
},
beforeSend: beforeSend,
success: onComplete,
error: onError,
// Form data
data: fd,
//Options to tell jQuery not to process data or worry about content-type.
cache: false,
contentType: false,
processData: false
});
}
但是,有一件事效果不佳,我很想知道是否有人对此有很好的解释。在 java 服务器端,我的 servlet 检查是否允许用户上传文件,如果没有,则返回 success=false 或其他任何内容。奇怪的是,进度条仍在进行中,就像服务器将上传它一样,当进度完成时我只收到错误消息。这真的很奇怪,我的期望是进度不会开始,或者应该在返回错误时取消。当然,我可以在开始发送之前检查用户,但我做了第二次,在没有终点的 ajax 中输入了一个错误的 URL,它仍然显示进度直到结束,如果它是一个大文件需要一段时间有时会冻结浏览器。 有没有办法在服务器错误的进程中更早地停止进程。 在谷歌搜索几个小时后找到解决方案没有找到有同样问题的人会很棒 问候 JP
【问题讨论】:
-
在网络选项卡中你可以点击与此功能相关的url
upload在这种情况下并单击它,然后查看response选项卡,它输出了什么null??? -
网络响应是 {succes:false} 从服务器获得。