gpt4 book ai didi

javascript - 表单提交后返回结果

转载 作者:行者123 更新时间:2023-11-30 06:51:54 27 4
gpt4 key购买 nike

我需要快速帮助。

我希望用户可以上传 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查询...它提交了两次,第一次提交正在获取表单信息,第二次提交正在检查是否成功...我不知道是否任何人都有更好的想法,但这就是我要改变的以使其发挥作用。这听起来不是一个好主意,但目前可行。如果有人有更好的想法,请告诉我,工作示例会很棒。

最佳答案

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

关于javascript - 表单提交后返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42589367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com