在表格提交后返回结果

在表格提交后返回结果

问题描述:

我需要快速帮助。在表格提交后返回结果

我希望用户可以上传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查询......它提交两次,第一次提出越来越表单信息和第二提交正在检查成功......我不知道有没有人有更好的想法,但这是我为了使它工作而改变的。这听起来不是一个好主意,但它现在可行。如果有人有更好的想法,请让我知道,一个工作样本将是伟大的。

+0

change type =“submit”to type =“button”将得到json返回 –

使用按钮而不是提交。这是因为提交类型输入提交表单,但您也使用ajax发送请求。这是两个请求的原因。

+0

好的,让我试试。感谢您的回应。 –

+0

你的意思是type =“button”not type =“submit”...现在我明白了......谢谢 –