Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.07.2013, 21:57
Новичок на форуме
Отправить личное сообщение для Soeth Посмотреть профиль Найти все сообщения от Soeth
 
Регистрация: 21.07.2013
Сообщений: 5

Автоматический Submit нескольких форм
Сложилась такая ситуация: на странице есть несколько форм, по истечению таймера кнопки должны "сами нажиматься" и передавать данные на сервер. Вроде ничего сложного, написал таймер и все работает, только вот 1 незадача, выполняется submit только одной, самой первой формы.
Потратил уйму времени, но решения так и не нашел. Помогите разобраться, вот код без всяких таймеров.

<html>
        <head>
          <script type = 'text/javascript'>
            function submit_forms () {
              document.forms[0].submit();
              document.forms[1].submit();
            }
          </script>
        </head>
        
        <body onload='submit_forms();'>
          <form id = 'form_1' action = 'http://www.google.ru/' method = 'post' target = '_blank'>
            <input type = 'hidden' name = 'input_1'>
            <input type = 'submit' value = 'Submit'>
          </form>
          
          <form id = 'form_2' action = 'http://www.google.ru/' method = 'post' target = '_blank'>
            <input type = 'hidden' name = 'input_2'>
            <input type = 'submit' value = 'Submit'>
          </form>
        </body>
      </html>
Ответить с цитированием
  #2 (permalink)  
Старый 21.07.2013, 22:04
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<html>
        <head>
          <script type = 'text/javascript'>
            function submit_forms () {
              document.getElementById('submit1').click();
              document.getElementById('submit2').click();
            }
          </script>
        </head>
        
        <body onload='submit_forms();'>
          <form id = 'form_1' action = 'http://www.google.ru/' method = 'post' target = '_blank' onsubmit="alert('A')">
            <input type = 'hidden' name = 'input_1'>
            <input id=submit1 type = 'submit' value = 'Submit'>
          </form>
          
          <form id = 'form_2' action = 'http://www.google.ru/' method = 'post' target = '_blank' onsubmit="alert('B')">
            <input type = 'hidden' name = 'input_2'>
            <input id=submit2 type = 'submit' value = 'Submit'>
          </form>
        </body>
      </html>
Ответить с цитированием
  #3 (permalink)  
Старый 21.07.2013, 22:22
Новичок на форуме
Отправить личное сообщение для Soeth Посмотреть профиль Найти все сообщения от Soeth
 
Регистрация: 21.07.2013
Сообщений: 5

Да, субмиты происходят, но всеравно на сервер отправляются данные только с первой формы, так же в браузере открывается только окно открытое первой кнопкой.

<?php
  if (isset($_POST['input_1'])) {
    echo "1";
  } elseif (isset($_POST['input_2'])) {
    echo "2";
  } else {
?>
       <html>
        <head>
          <script type = 'text/javascript'>
            function submit_forms () {
              document.getElementById('submit1').click();
              document.getElementById('submit2').click();
            }
          </script>
        </head>
        
        <body onload='submit_forms();'>
          <form id = 'form_1' action = '' method = 'post' target = '_blank'>
            <input type = 'hidden' name = 'input_1'>
            <input id=submit1 type = 'submit' value = 'Submit'>
          </form>
          
          <form id = 'form_2' action = '' method = 'post' target = '_blank'>
            <input type = 'hidden' name = 'input_2'>
            <input id=submit2 type = 'submit' value = 'Submit'>
          </form>
        </body>
      </html>
<?php
}
?>
Ответить с цитированием
  #4 (permalink)  
Старый 21.07.2013, 22:29
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Soeth
только вот 1 незадача, выполняется submit только одной, самой первой формы.
Так и должно происходить. Браузер не может делать два запроса одновременно. Че, окно должно раздвоиться чтоли?
Ответить с цитированием
  #5 (permalink)  
Старый 21.07.2013, 22:48
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Soeth,
А как Вы определяете? inputы у Вас пустые!
Ответить с цитированием
  #6 (permalink)  
Старый 21.07.2013, 22:49
Новичок на форуме
Отправить личное сообщение для Soeth Посмотреть профиль Найти все сообщения от Soeth
 
Регистрация: 21.07.2013
Сообщений: 5

Вот вариант с таймером. Теперь кнопки срабатывают по очереди, одна за другой с заданным интервалом. И проблема не решена.

<?php
  if (isset($_POST['input_1'])) {
    echo "1";
  } elseif (isset($_POST['input_2'])) {
    echo "2";
  } else {
?>
       <html>
        <head>
          <script type = 'text/javascript'>
          
          seconds = 3;
          var x = document.getElementsByTagName('form');
          var secondsArray = [x.length];
          
          function decreaseTime() {
            for (var i = 1; i <= x.length; i ++) {
              var button = document.getElementById('button_'+i);
              //var form = document.getElementById('form_'+i);
              if (secondsArray[i] > 0) {
                secondsArray[i] -= 1;
                button.value = secondsArray[i];
              } else {
                if (secondsArray[i] == 0) {
                  secondsArray[i] = -1;
                  button.click(); 
                }
              }
            }
            setTimeout('decreaseTime()',1000);
          }
          
          window.onload = function() {
            for (var i = 1; i <= x.length; i ++) {
              var button = document.getElementById('button_'+i);
              button.value = seconds * i;
              secondsArray[i] = seconds * i;
            }
            setTimeout('decreaseTime()',1000); 
          }
          
          </script>
        </head>
        
        <body>
          <form id = 'form_1' action = '' method = 'post' target = '_blank'>
            <input type = 'hidden' name = 'input_1'>
            <input id = 'button_1' type = 'submit' value = 'Submit'  onsubmit="alert('A')">
          </form>
          
          <form id = 'form_2' action = '' method = 'post' target = '_blank'>
            <input type = 'hidden' name = 'input_2'>
            <input id = 'button_2' type = 'submit' value = 'Submit'  onsubmit="alert('B')">
          </form>
        </body>
      </html>
<?php
}
?>
Ответить с цитированием
  #7 (permalink)  
Старый 21.07.2013, 22:50
Новичок на форуме
Отправить личное сообщение для Soeth Посмотреть профиль Найти все сообщения от Soeth
 
Регистрация: 21.07.2013
Сообщений: 5

Определяю PHP методом isset()

if (isset($_POST['input_1'])) {
echo "1";
}
Ответить с цитированием
  #8 (permalink)  
Старый 21.07.2013, 23:00
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Soeth,
Ни наю - могу показать что отправляются обе формы!
<html>
        <head>
          <script type = 'text/javascript'>
            function submit_forms () {
              document.getElementById('submit1').click();
              document.getElementById('submit2').click();
            }
          </script>
        </head>
        
        <body onload='submit_forms();'>
<iframe name=frame1></iframe><iframe name=frame2></iframe>
          <form id = 'form_1' action = 'http://www.okonti.ru/'  method = 'post' target = 'frame1'>
            <input type = 'hidden' name = 'input_1' value="nput_1">
            <input id=submit1 type = 'submit' value = 'Submit'>
          </form>
          
          <form id = 'form_2' action = 'http://www.rapidoloto.ru/' method = 'post' target = 'frame2' >
            <input type = 'hidden' name = 'input_2' value="nput_2">
            <input id=submit2 type = 'submit' value = 'Submit'>
          </form>
        </body>
      </html>


И в тесте хидера Инет запроса - две разных формы

Последний раз редактировалось Deff, 21.07.2013 в 23:02.
Ответить с цитированием
  #9 (permalink)  
Старый 21.07.2013, 23:03
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Soeth
И проблема не решена.

показать чистый исходник в новом окнеСкрыть/показать номера строк
А где у Вас отправляемые данные ? value - где
Ответить с цитированием
  #10 (permalink)  
Старый 21.07.2013, 23:26
Новичок на форуме
Отправить личное сообщение для Soeth Посмотреть профиль Найти все сообщения от Soeth
 
Регистрация: 21.07.2013
Сообщений: 5

Сообщение от Deff Посмотреть сообщение
А где у Вас отправляемые данные ? value - где
Это просто для теста написан пример кода, в реальной версии все присутствует, а для проверки работоспособности и без value можно обойтись )
И спасибо за идею с iframe, она мне подходит даже больше, чем открытие новых вкладок и работает отлично!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как связать данные с нескольких форм FAG Элементы интерфейса 0 24.10.2012 15:56
Несколько форм с одним классом + submit klev2004 Общие вопросы Javascript 8 09.07.2012 15:41
Метод submit() не передает массив $_POST ZaValera Общие вопросы Javascript 15 21.06.2012 16:02
Отправка нескольких форм с помощью ajax voloxa89 jQuery 2 28.09.2011 22:08
submit в iframe по событию change vovasvv jQuery 1 21.05.2010 09:37