我需要快速帮助。在表格提交后返回结果
我希望用户可以上传csv文件。然后我用后面的文件做一些解析和有意义的事情。最后,将结果显示给用户。当他们上传文件时,我想检查文件大小是否为< = 250kb或包含< = 1000行。
在JSP:
<form action="/Project/CSVUpload" method="post" enctype="multipart/form-data">
<br />
<input id="uploadfilebutton" type="file" name="file" class="tss-btn tss-btn-blue" accept=".csv" required />
<br />
<input id="processfilebutton" type="submit" value="Process File" class="tss-btn tss-btn-blue" />
</form>
所以有一个上传按钮和一个提交按钮。如何在用户点击提交按钮后返回状态?例如,如果进程失败,我想显示弹出错误消息。
在JavaScript:
function process()
{
$.ajax({
url:"/Project/CSVUpload",
type:'POST',
contentType: 'application/json',
dataType: 'json',
success:function(soapContents){
if (soapContents.haserrors)
{
BootstrapDialog.show({
title: 'Process File Failed',
message: soapContents.returnmessage,
buttons: [ {
label: 'Ok',
action: function(dialogItself){
dialogItself.close();
}
}]
});
}
}
});
}
这工作时我不使用形式。该表单是必需的,因为enctype必须是这样的。
在Java:
@WebServlet("/CSVUploads")
public class CSVUpload extends HttpServlet
{
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException
{
boolean hasErrors = false;
if (CSVUpload success) // assume we get the info from CSVUpload class
{
hasErrors = true;
}
if (hasErrors)
{
log.error("CSVUpload: "+returnMessage);
// Setup JSON response.
JsonObjectBuilder jsonObjectBuilder = Json.createObjectBuilder();
jsonObjectBuilder.add("haserrors", hasErrors);
jsonObjectBuilder.add("returnmessage", returnMessage);
JsonObject jsonObject = jsonObjectBuilder.build();
// Write the JSON out as a response.
PrintWriter printWriter = response.getWriter();
printWriter.print(jsonObject);
printWriter.flush();
}
}
所以我做了一些改变,并添加一个新的Java类来处理Ajax查询......它提交两次,第一次提出越来越表单信息和第二提交正在检查成功......我不知道有没有人有更好的想法,但这是我为了使它工作而改变的。这听起来不是一个好主意,但它现在可行。如果有人有更好的想法,请让我知道,一个工作样本将是伟大的。
change type =“submit”to type =“button”将得到json返回 –