跨窗口消息传递和表单提交

时间:2011-12-17 14:58:10

标签: java html forms html5 jsp

目前这就是我现在正在做的事情:

内容页面有一个按钮,iframe也属于该页面上的另一个服务器。按下按钮时,javascript会从客户端浏览器中获取一些信息。然后使用window.postmessage方法将信息发送到iframe。

我在iframe中放置了一个带有文本字段的表单。当监听器收到postmessage数据(event.data)时,它会使用document.form.textfieldid.value存储到文本字段中,这样我就可以使用document.form.submit()将数据发送到我的servlet。然后,servlet使用request.getparameter()检索数据,执行INSERT查询以将数据存储到数据库中。

这次执行完美无缺。

问题:

我添加了另一个javascript,因此如果再次按下按钮(不重新加载页面),它将抓取另一个数据,并且应该再次执行上面的过程。 window.postmessage已成功接收数据,但POST未执行(可通过netbeans的http监视器查看)。这意味着表格没有提交。

总之,表单仅在第一次按下按钮时才会提交,除非我重新加载页面,否则它将无法再次运行。

我正在使用捆绑在Netbeans 7中的apache Tomcat 7.0.14。

我想知道为什么会这样?有什么误解吗?

这是iframe的代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>JSP Page</title>
</head>
<body>
<form name="form" action="databaseServlet" method="post">
<input type="text" id ="output" name ="out" />  
</form>
<div id="message"> TEST </div>

<script>

var xmlhttp;          
function listener(event)
{

document.form.output.value = event.data ;
document.form.submit()               
}
if(window.addEventListener)
addEventListener("message", listener, false)
else
attachEvent("onmessage",listener)
</script>

</body
</html>

解决:

我找到了解决方案。这是我的坏。 POST后我没有设置响应。我只是使用servlet中的sendRedirect(“theiframe.jsp”)将表单重定向到其早期状态,它将能够在不重新加载整个页面的情况下重新发送。

0 个答案:

没有答案