我正在尝试使用JSP / JQuery进行文件上传,但我必须在提交之前进行一些Ajax调用。
但是,在进行Ajax调用并提交表单后,表单字段在服务器端都是空的?
如果我不调用e.preventDefault(),那么一切正常,但我需要在提交前进行Ajax调用!
由于
CLIENT SIDE:
<form method="post" action="accept.htm" enctype="multipart/form-data">
...
<input type="file" name="thefile" id="thefile"/>
<input type="submit" name="uploadfile" id="uploadfile" value="Upload File"/>
...
</form>
$("form").on("submit", function(e)
{
e.preventDefault(); // stop the form being submitted for now
// make a few ajax calls
...
// submit the form in ajax success callback
$("form").unbind("submit");
$("form").submit();
}
SERVER SIDE:
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
ServletFileUpload servletFileUpload = new ServletFileUpload();
servletFileUpload.setFileSizeMax(Long.valueOf(maxUploadFileSize));
servletFileUpload.setProgressListener(new UploadProgressListener());
FileItemIterator fileItemIterator = servletFileUpload.getItemIterator(request);
if(isMultipart)
{
while(fileItemIterator.hasNext()) <--- empty?
{
...
}
}
答案 0 :(得分:0)
试试这个
$("form").on("submit", function(e)
{
// make a few ajax calls
...
// finally submit
$("form").unbind("submit");
$("form").submit();
e.preventDefault(); // stop the form being submitted for now
}
e.preventDefault();
发送返回false可能会与ajax一起发布
答案 1 :(得分:0)
原来我在一个禁用文件输入字段的Ajax调用中有一个JQuery语句。删除后,文件在服务器端再次可用。因此,禁用文件输入字段会导致它因某种原因变得不可用。