Обмен сообщениями через окно и отправка формы - PullRequest
0 голосов
/ 17 декабря 2011

В настоящее время это то, чем я сейчас занимаюсь:

На странице контента есть кнопка, на этой странице также есть 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") в сервлете, который можно будет перезапустить без перезагрузки всей страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...