【问题标题】:How to send data from a dynamically added form to php using ajax如何使用ajax将数据从动态添加的表单发送到php
【发布时间】:2018-07-05 14:58:01
【问题描述】:

我创建了一个动态表单,其中包含来自 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>

}?>

如果我的表单是动态创建的,我将如何获取这些数据?我什至必须在我的表单中添加一个数组符号,例如 &lt;form name="myFrm[]" ?如果是这样,我什至怎么称呼它为 ajax?

【问题讨论】:

  • 如何创建表单并不重要。它存在于 DOM 中。只要你能写一个选择器来找到它,当你需要它的时候,你可以用它做任何你想做的事情。
  • 表单是动态构建还是静态构建都是一样的。 .serialize() 选取任何名称存在于指定 &lt;from&gt; 中的 &lt;input&gt;
  • 最后我记得.serialize()不包括输入类型提交。不知道这是否仍然是真的
  • @frz3993 可以,只要你给它一个 name 属性。
  • 啊,原来是按钮类型提交api.jquery.com/serialize

标签: php jquery ajax mysqli


【解决方案1】:

请尝试以下解决方案。

使用自增变量动态设置表单ID。

<?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++; 
}?>

下面是用于在 ajax 中获取动态表单 ID 的 JavaScript 代码。

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

【讨论】:

  • 总是有这种错误。不知道那是什么,但每当我点击上面给定代码上的单选按钮时,它的值都保持在 3,我可以' t 似乎点击了另一组动态创建的单选按钮。,
  • 哎呀,nvm,它实际上与按钮一起使用,但我们暂时删除输入类型。,我们将如何仅使用单选按钮处理该事件?
【解决方案2】:

目前你的 JavaScript 说:

  • 文档准备就绪时:
    • 用表单做点什么

因此,在您的用户甚至输入数据之前,您已经运行了 $.ajax 命令,您可能希望使用某种事件侦听器将其包装起来,例如更改,或者添加一个提交按钮并提交数据。

【讨论】:

  • 这是一个有效的观点,但它没有回答 OP 的实际问题。如果您添加一些可以解决实际问题的内容会更好,否则这实际上只是一个评论
猜你喜欢
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
相关资源
最近更新 更多