我正在使用上传1个文件和formdata的jQuery文件上传。 文件和数据在后端成功上传,但我没有在完成功能内得到响应。后端是Java,Spring控制器,它返回ModelAndView的对象。在浏览器中我得到状态200 OK但为什么我的ajax请求的完成功能没有触发? 期待所有人的帮助..
以下是我的代码:
$("#uploadMail").fileupload({
maxNumberOfFiles: 1,
add: function(e, data) {
cleanErrors();
var result = data.files;
result.forEach(function(file) {
console.log(file.name);
$("#fileName").val(file.name);
});
$(".saveFile").off('click');
$(".saveFile").on('click', function(event) {
cleanErrors();
event.preventDefault();
var mailCategory = $("#mailCategory").val();
data.submit(function(event) {
$.ajax({
url: contextPath + '/mail/upload.sf?mailCategory' + mailCategory,
type: "POST",
dataType: "text",
data: data
}).done(function(data, textStatus, jqXHR) {
alert("hii" + textStatus);
alert(data);
}).fail(function() {
alert("done2");
})
});
});
hideWait();
}
});
jQuery中的初学者和javascript为如果有的错误道歉。提前谢谢。
答案 0 :(得分:0)
我认为您使用的插件取决于闪存。此上传功能要求在浏览器中安装Flash插件以进行上传功能。我强烈建议使用带有jquery的Formdata。
见下面的例子
<强>制剂强>
您可以将整个表单提供给FormData()进行处理
var form = $('form')[0]; // You need to use standard javascript object here
var formData = new FormData(form);
或指定FormData()
的确切数据var formData = new FormData();
formData.append('section', 'general');
formData.append('action', 'previewImg');
// Attach file
formData.append('image', $('input[type=file]')[0].files[0]);
发送表格
使用jquery的Ajax请求将如下所示:
$.ajax({
url: 'Your url here',
data: formData,
type: 'POST',
contentType: false, // NEEDED, DON'T OMIT THIS (requires jQuery 1.6+)
processData: false, // NEEDED, DON'T OMIT THIS
// ... Other options like success and etc
});
在此之后,它将发送ajax请求,就像你提交带有enctype =&#34; multipart / form-data&#34;
的常规表单一样更新:如果没有类型,此请求将无法运行:&#34; POST&#34;在选项中,导致所有文件必须通过POST请求发送。
希望这会有所帮助。感谢