【问题标题】:Get result back after form submit表单提交后返回结果
【发布时间】:2017-03-03 22:15:13
【问题描述】:

我需要快速帮助。

我希望用户可以上传 csv 文件。然后我对后面的文件做一些解析和有意义的事情。最后,将结果显示给用户。当他们上传文件时,我想检查文件大小是否为

在 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 查询...它提交了两次,第一次提交是获取表单信息,第二次提交是检查是否成功...我不知道是否任何人都有更好的主意,但这就是我为了让它发挥作用而改变的。这听起来不是一个好主意,但它现在有效。如果有人有更好的想法,请告诉我,一个工作样本会很棒。

【问题讨论】:

  • 将 type="submit" 改为 type="button" 会得到 json 返回

标签: javascript java jquery html jsp


【解决方案1】:

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

【讨论】:

  • 好吧,让我试试。感谢您的回复。
  • 你的意思是 type="button" 不是 type="submit"...现在我明白了...谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-21
  • 2011-08-06
  • 2014-05-26
相关资源
最近更新 更多