gpt4 book ai didi

javascript - 如何将提交表单的时间发送给servlet?

转载 作者:太空宇宙 更新时间:2023-11-04 16:14:18 24 4
gpt4 key购买 nike

请看下面的代码

 <script>
$(document).ready(function(){
$("form").submit(function(){
var text = document.getElementsByName('text')[0].value;
var action = $("form")[0].action;
action = action+"?date="+new Date();
alert(action);
});
});
</script>

</head>
<body>


<form name="test" method="post" action="B">
<input name="text" type="text">
<input type="submit" value="Submit">


</form>

我试图在将表单发送到 servlet 之前将提交表单的时间附加到 URL。但是在我的 servlet 中,时间没有显示,在浏览器 URL 中也没有显示 date 变量。

我的servlet代码在下面供引用

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try
{
String print=request.getParameter("date");
out.print(print);
} finally
{
out.close();
}
}

如何通过 URL 或任何其他方法将提交表单的时间发送到 URL?

最佳答案

这些行:

var action = $("form")[0].action;
action = action+"?date="+new Date();

...只需更新您的action 变量。该变量与表单的 action 属性没有持续的联系。

您也不需要再次查找表单,它是您的 submit 回调中的 this

要更新表单的 action 属性,您必须分配给它:

this.action = this.action + "?" + encodeURIComponent(new Date());

请注意,这将以依赖于浏览器的格式发送日期,这不太可能有用。相反,也许:

this.action = this.action + "?" + encodeURIComponent(new Date().toISOString());

另外,您在 submit 处理程序中执行此操作。可能值得仔细检查一下在您的各种目标浏览器上是否足够早。如果没有,请改为在 submit 按钮的 click 上执行此操作:

$("form input[type=submit]").on("click", function() {
this.form.action = this.form.action + "?" + encodeURIComponent(new Date().toISOString());
});

或者,作为将其附加到 URL 的替代方法,您可以在表单中添加一个隐藏字段:

<input name="date" type="hidden">

...您从 submit 处理程序中填写:

$(this).find("input[name=date]").val(new Date().toISOString());

旁注:从客户端发送的所有信息都可能被伪造,因此请对您收到的日期/时间持保留态度。特别是,您不能依赖它来了解表单实际发送的时间。要知道这一点,请在服务器 上使用代码记录接收日期/时间,这只会在几毫秒后发生。

关于javascript - 如何将提交表单的时间发送给servlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33100729/

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