В настоящее время это то, чем я сейчас занимаюсь:
На странице контента есть кнопка, на этой странице также есть iframe, принадлежащий другому серверу.Когда кнопка нажата, JavaScript получает некоторую информацию из браузера клиента.Затем информация была отправлена в iframe с помощью метода window.postmessage.
Я поместил форму с текстовым полем в iframe.Когда слушатель получил данные postmessage (event.data), он затем сохраняется в текстовом поле с помощью document.form.textfieldid.value, поэтому я могу использовать document.form.submit () для отправки данных в мой сервлет.Затем сервлет получает данные, используя request.getparameter (), выполняя запрос INSERT для сохранения данных в базе данных.
Это выполнение работало отлично.
ПРОБЛЕМА:
Я добавил еще один javascript, чтобы он получал другие данные, если кнопка нажата снова (без перезагрузки страницы), и процессвыше должно быть выполнено снова.window.postmessage успешно получил данные, однако POST не выполняется (можно увидеть это через http-монитор netbeans).Это означает, что форма не представлена.
В итоге, форма была отправлена только при первом нажатии кнопки, и она не будет работать снова, пока я не перезагружу страницу.
Я использую Apache Tomcat 7.0.14, который входит в состав Netbeans 7.
Интересно, почему это произошло?Любое заблуждение?
Это коды 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.Я просто перенаправил форму в ее раннее состояние, используя sendRedirect ("theiframe.jsp") в сервлете, который можно будет перезапустить без перезагрузки всей страницы.