【问题标题】:Save form with repeater fields with ajax使用 ajax 保存带有转发器字段的表单
【发布时间】:2019-09-16 13:09:53
【问题描述】:

我在html 有一个表单,用户可以根据需要添加任意数量的成员。

所以我有一个包含成员详细信息的 div:

<div class="form-group form-group-100 clearfix">
    <label>Name:</label>
    <input type="text" name="namemember">
//..........
</div>

还有一个添加新成员的按钮:

<button id="b1" class="btn add-more" type="button">Add Member +</button>

这是jquery添加新成员的代码:

<script>
jQuery(document).ready(function(){
  var member=jQuery('.form-group-100').html();
  jQuery(".add-more").click(function(e){
    alert('A New Member Added');
    e.preventDefault();
    jQuery('.form-group-100').after("<div class="+""+"form-group-100"+"clearifx"+">"+member+"</div>");
  });
});

这是通过ajax发送数据的jquery代码:

<script>
jQuery(document).ready(function($) {
  // Custom From submistion ADD NEW
  jQuery(function($) {
    $('#addnew').click(function(event){
      event.preventDefault();
      var data = $('.myform').serialize();
      var url = window.location.href;
      data += "&url=" + url;

      $.ajax({
        url: "http://localhost/mysite/wp-content/themes/mytheme/save_team.php",
        type: "POST",
        data: data,
        complete: function (json) {
        var jsonData = $.parseJSON(json.responseText);
        if (jsonData['msg'] == 'success') {
          alert("Success");
        } else {
          alert("Sorry! Something went wrong. Please try again.");
        }
      }
      });
    });
  });
  </script>

我知道,如果我有固定数量的成员,我可以像这样读取数据:

$_POST["namemember"];

但是现在当我有可变数量的成员时如何读取传递的数据?以及如何区分每个成员的详细信息?

【问题讨论】:

    标签: jquery ajax wordpress forms repeater


    【解决方案1】:

    使用数组代替单数名称

    <input type="text" name="namemember[]">
    

    你可以像这样在 PHP 中访问它:

    $namemember = unserialize($_POST["namemember"]);
    foreach( $namemember as $value ) {
     print $value;
    }
    

    现在$_POST['namemember'] 是一个字段数组

    【讨论】:

    • 你可能还需要 $namemember = unserialize($_POST["namemember"]);
    • 现在我可以在发布的表单数据(chrome 中的网络选项卡)中看到多个“namember[]”值而不是数组
    • @slon +1 感谢您的更正。我已经对帖子进行了编辑。
    • 我在$namemember = unserialize($_POST["namemember"]); 行中收到此错误Warning: unserialize() expects parameter 1 to be string, array given
    • 你能把print_r$_POST["namemember"]的内容在这里分享给我们吗?
    【解决方案2】:

    您是否将成员的信息存储在 BBDD 中?

    如果答案是肯定的,您可以进行查询以获取所有成员及其详细信息并将其保存在变量中。

    【讨论】:

    • 我想将它们存储到数据库中,但是如果有重复的字段,我不知道如何读取从表单传递的数据。
    • 这可能是 cmets 部分的问题。
    • 如果每次添加成员时都为该成员添加一个 div,只需将所有成员放入一个通用 div 并使用 js 函数即可将该信息放入对象中。 @thelaw
    • 你能举个例子吗?
    猜你喜欢
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2017-03-31
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多