Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Формы и Jquery

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Работает только одна форма!
keilman
Отправлено: 09 Февраля, 2013 - 11:46:38
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Есть ма-аленькая тестовая страничка:

PHP:
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. <title>Тест</title>
  4. <script src="jquery_v1.8.3.js" type="text/javascript"></script>
  5. </head>
  6.  
  7. <body>
  8. <script language="javascript" type="text/javascript">
  9. $(document).ready(function()
  10. {
  11.         $("form.forma1").submit(function()
  12.         {
  13.                 $.ajax(
  14.                 {
  15.                         type: "POST",
  16.                         url: "switch.php?action=test1",
  17.                         data:
  18.                         {
  19.                                 par1:$('input.param1').val(),
  20.                                 par2:$('input.param2').val()
  21.                         },
  22.                         success: function(html)
  23.                 {
  24.                         $("div#resultat").html(html);
  25.                 }
  26.         });
  27.         return false;
  28.         });
  29. });
  30. </script>
  31.  
  32. <form class="forma1">
  33. Параметр 1:&nbsp;<input class="param1" type="text" size="20">Параметр 2:&nbsp;<input class="param2" type="text" size="20"><input type="submit" value="Отправить">
  34. </form>
  35.  
  36. <form class="forma1">
  37. Параметр 1:&nbsp;<input class="param1" type="text" size="20">Параметр 2:&nbsp;<input class="param2" type="text" size="20"><input type="submit" value="Отправить">
  38. </form>
  39.  
  40. <div id="resultat"></div>
  41.  
  42. </body>
  43. </html>


Проблема в том, что работает только одна форма не зависимо от того по какой кнопке нажать "отправить".

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

Подскажите знатоки!
Силен только в PHP, Ajax и Jquery только начал использовать, поэтому жду подробный ответ или замечание.
(Добавление)
Да кстати, посмотреть можно здесь этот баг, тестовая страница - www[dot]3gs[dot]su/test/

Да и не спрашивайте почему одинаковые формы. Они генерятся циклом WHILE в PHP и поэтому одинаковые названия и классы.
(Добавление)
Эта функция планируется использоваться в магазине, функция добавления товаров в корзину без перезагрузки.
 
 Top
SAD
Отправлено: 09 Февраля, 2013 - 12:34:35
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. $("form.forma1").each(function() {
  2.     var $this = $(this);
  3.    
  4.     $this.submit(function () {
  5.         $.ajax({
  6.             type: "POST",
  7.             url: "switch.php?action=test1",
  8.             data: {
  9.                 par1: $('input.param1', $this).val(),
  10.                 par2: $('input.param2', $this).val()
  11.             },
  12.             success: function (html) {
  13.                 $("div#resultat").html(html);
  14.             }
  15.         });
  16.         return false;
  17.     });
  18. });
  19.  
 
 Top
keilman
Отправлено: 09 Февраля, 2013 - 13:15:56
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




SAD пишет:
CODE (javascript):
скопировать код в буфер обмена
  1. $("form.forma1").each(function() {
  2.     var $this = $(this);
  3.    
  4.     $this.submit(function () {
  5.         $.ajax({
  6.             type: "POST",
  7.             url: "switch.php?action=test1",
  8.             data: {
  9.                 par1: $('input.param1', $this).val(),
  10.                 par2: $('input.param2', $this).val()
  11.             },
  12.             success: function (html) {
  13.                 $("div#resultat").html(html);
  14.             }
  15.         });
  16.         return false;
  17.     });
  18. });
  19.  


Спасибо за то что отреагировали на сообщение, думал как раз то что нужно и Вы правильно поняли мою проблему, но..
Странно... Почему то не работает... Проверил все.
С приведенным Вами кодом при нажатии на кнопку страница вся перезагружается, ajax не работает, хотя результаты должны были вывестись в блоке div #resultat

С моим кодом ajax работал, но параметры только первой формы передавались.
(Добавление)
А хотя может оно и рабочее..

У меня в обработчике данные принимаются так:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. switch ($_REQUEST['action'])
  3. {
  4.         case 'test1':
  5.         echo '<hr />';
  6.         echo "\n";
  7.         echo 'Первый параметр - '.$_POST['par1'].'<br />';
  8.         echo "\n";
  9.         echo 'Второй параметр - '.$_POST['par2'].'<br />';
  10.         break;
  11.         case 'test2':
  12.         echo '<hr />';
  13.         echo "\n";
  14.         echo 'Тестовый вывод 2';
  15.         break;
  16. }
  17. ?>


Все правильно с Вашим кодом также должно быть или по другому?
 
 Top
SAD
Отправлено: 09 Февраля, 2013 - 13:21:54
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




у меня все работает. проверил на вашей же странице

сделайте так на всякий случай.


CODE (javascript):
скопировать код в буфер обмена
  1.     $("form.forma1").off('submit').each(function() {
  2.         var $this = $(this);
  3.        
  4.         $this.submit(function () {
  5.             $.ajax({
  6.                 type: "POST",
  7.                 url: "switch.php?action=test1",
  8.                 data: {
  9.                     par1: $('input.param1', $this).val(),
  10.                     par2: $('input.param2', $this).val()
  11.                 },
  12.                 success: function (html) {
  13.                     $("div#resultat").html(html);
  14.                 }
  15.             });
  16.             return false;
  17.         });
  18.     });
 
 Top
keilman
Отправлено: 09 Февраля, 2013 - 13:32:06
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




SAD пишет:
у меня все работает. проверил на вашей же странице

сделайте так на всякий случай.


Сорри!!! Белый флаг

МОЙ КОСЯК!

Первый Ваш код рабочий!

Это я тупанул... Не понял

Я вставил Ваш код просто заменив свой при этом не включил мозги! Торопился..

Не провел отличия.

Я забыл строку написать:
PHP:
скопировать код в буфер обмена
  1. $(document).ready(function()
  2. {
  3. ....
  4. }


Премного благодарен!
Спасибо пока не могу на этом форуме нажимать..
Классный форум и его обитатели!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB