Как отправить данные из динамически добавляемой формы на php с помощью ajax

Я создал динамическую форму с данными из базы данных MySQL, и она отлично работает. Проблема в том, что я не знаю, как заставить ajax читать форму.

Предполагая, что приведенный ниже код представляет собой единую форму:

<form>
    <!-- input type content here -->
</form>

Эквивалентный код ajax будет:

$(document).ready(function(

    $.ajax({
        url: 'url',
        data: $("#frm").serialize();
       //insert more code...
});

))

Что, если бы моя форма была динамически добавлена ​​следующим образом:

<?php while($row = $result->fetch_assoc()){
    <!-- insert code for dynamic grid see sample link [here][1]  
    <form>
       <input type = "radio" name = "rate" value = "1">
       <input type = "radio" name = "rate" value = "2">
       <input type = "radio" name = "rate" value = "3">

       <input type = "text" name = "name" value = "<?php echo $row['p_name']?>"
       <input type = "text" name = "price" value = "<?php echo $row['p_price']?>"
    </form>

}?>

Как мне получить эти данные, если моя форма была создана динамически? Нужно ли мне вообще добавлять в форму символ массива, например <form name = "myFrm[]"?. Если это так, как бы я даже назвал его ajax?

Как форма была создана не имеет значения. Он существует в DOM. Пока вы можете написать селектор для его поиска, вы можете делать с ним все, что хотите.
Taplar 05.07.2018 17:05

То же самое независимо от того, построена ли форма динамически или статически. .serialize() принимает любой <input> с именем, которое существует в указанном <from>.

RiggsFolly 05.07.2018 17:08

Последнее, что я помню, .serialize() не включает отправку типа ввода. Не знаю, правда ли это

frz3993 05.07.2018 17:12

@ frz3993 может, если вы укажете ему атрибут name.

Taplar 05.07.2018 17:15

Ах, на самом деле это кнопка типа submit api.jquery.com/serialize.

frz3993 05.07.2018 17:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
419
2

Ответы 2

В настоящее время ваш JavaScript говорит:

  • когда документ готов:
    • сделать что-нибудь с формой

Поэтому, прежде чем ваш пользователь даже ввел данные, вы выполнили эту команду $.ajax, вы, вероятно, захотите обернуть ее каким-то прослушивателем событий, например change, или, возможно, добавить кнопку отправки и отправить данные.

Это верный момент, но он не отвечает на фактический вопрос ОП. Если вы добавите что-то, что касается фактического вопроса, будет лучше, иначе это действительно просто комментарий

RiggsFolly 05.07.2018 17:10

Пожалуйста, попробуйте решение ниже.

Установить идентификатор формы динамически с переменной автоинкремента.

<?php $i=1; while($row = $result->fetch_assoc()){
<!-- insert code for dynamic grid see sample link [here][1]  
<form id = "frm<?php echo $i;?>">
   <input type = "radio" name = "rate" value = "1">
   <input type = "radio" name = "rate" value = "2">
   <input type = "radio" name = "rate" value = "3">

   <input type = "text" name = "name" value = "<?php echo $row['p_name']?>">
   <input type = "text" name = "price" value = "<?php echo $row['p_price']?>">
  <input type = "button" name = "button" value = "click" class = "common_submit_btn">
</form>
$i++; 
}?>

Ниже код JavaScript для получения идентификатора динамических форм в ajax.

$(document).ready(function(
  $(".common_submit_btn").click(function(){
  //here you can get submitted form data in console.
  console.info($('#'+$(this).closest('form').attr('id')).serialize());
  $.ajax({
    url: 'url',
    data: $('#'+$(this).closest('form').attr('id')).serialize(),
   //insert more code...
 });
});
});

всегда есть такая ошибка., не уверен, что это такое, но всякий раз, когда я нажимаю переключатель, например, в приведенном выше коде, он остается ровно на значении 3, и я не могу щелкнуть другую группу переключатель, который был создан динамически.,

David Diaz 05.07.2018 17:46

упс, nvm that., это действительно работает с кнопкой, но давайте пока удалим тип ввода., как мы будем обрабатывать это событие, используя только радиокнопку?

David Diaz 05.07.2018 17:50

Другие вопросы по теме