1. По клику на волшебную кнопку я загружаю документ во фрейм #frame. Содержание документа всегда разное. Для примера можете представить, что туда загружается текущее время. Через форму отправляю запрос php скрипту и он возвращает текст.
2. Жду полной загрузки документа -
$('#frame').load(function() {3...}
3. Забираю содержимое документа для дальнейшей магии -
var frameBody = $('#frame').contents().find('body').html();
4. Выполняется остальной код функции...
В первый раз функция срабатывает как надо - один раз. А если отправить форму ещё раз, функция сработает два раза подряд, как-будто фрейм загрузился два раза. Если нажать ещё раз - сработает три раза и т.д.
Вопросы - почему так происходит и как сделать так, чтобы информация из фрейма бралась один раз, после каждой отправки формы (загрузки новых данных во фрейм)?
Пример кода:
frame.php
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Тест</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
function send() {
document.forms[0].submit();
$('#frame').load(function() {
var frameBody = $('#frame').contents().find('body').html();
alert (frameBody);
});
}
</script>
</head>
<body>
<iframe id="frame" name="myFrame"></iframe>
<form action="time.php" method="post" target="myFrame">
<input type="submit" value="OK" onClick="send();">
</form>
</body>
</html>
time.php
<?
echo date('Y-m-d H:i:s');
?>