【问题标题】:Only getting one element from html array in my php file仅从我的 php 文件中的 html 数组中获取一个元素
【发布时间】:2015-08-30 10:21:08
【问题描述】:

我的 HTML 表单中有一个选择:

<form name="correo" id="correo" method="post" action="#" enctype="multipart/form-data" onSubmit="<!--return checkFields();-->" ><div class="multi-field-wrapper" name="multi-field-wrapper">
                    <div class="multi-fields" name="multi-fields">
                        <div class="multi-field" name="multi-field">
                            <div>
                                <label for="penviadas[]"> Cantidad </label>
                                <input type="number" name="penviadas[]" class="penviadas" id="penviadas" maxlength="70" placeholder="¿Cuántas?" onClick="removerIcon('iconcant');" > 
                            </div>
                         </div>
                    </div>
                    <button type="button" class="add-field">Añadir otra referencia</button>
                </div>

而且我可以动态添加字段(或者什么都一样,我可以多次重复上面的代码;下面的代码有效)。

$('.multi-field-wrapper').each(function() {
  var $wrapper = $('.multi-fields', this);
  $(".add-field", $(this)).click(function(e) {
    $('.multi-field:first-child', $wrapper).clone(true).appendTo($wrapper).find('input').val('').focus();
  });
  $('.multi-field .remove-field', $wrapper).click(function() {
    if ($('.multi-field', $wrapper).length > 1)
      $(this).parent('.multi-field').remove();
  });
});

假设我有 3 个不同的选择 (penviadas)。我想要的是在我提交表单后将它们全部放入我的 PHP 文件中。 它曾经工作过,但现在,由于某种原因,我只能获得第一个选择 (penviadas)。为什么我没有从 penviadas 数组中获取所有值?

PD:我在我的 PHP 中以不同的方式打印它,但它们都只返回来自 penviadas 的第一个元素,而不是其余的:

var_dump($_REQUEST['penviadas']);

【问题讨论】:

    标签: php jquery html arrays forms


    【解决方案1】:

    PHP 代码:

    <?php
    if(isset($_POST['test']))
    {
    $data = $_POST['referenciasnuevas'];
     foreach ($data as $key => $value) {
        echo $value . "<br />";
    }
    }
    ?>
    

    HTML代码:

    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    
    </head>
    <body>
    <form method="post" action="#">
    <div class="multi-field-wrapper" name="multi-field-wrapper">
    <div class="multi-fields" name="multi-fields">
    <div class="multi-field" name="multi-field">
    <label for="referenciasnuevas[]">Referencia pieza</label>
    <select name="referenciasnuevas[]" id="referenciasnuevas" class="referenciasnuevas" style="width: 105px"  onClick="removerIcon('iconref');">
    <option selected value='-1'> ¿cliente? </option></select>
    </div>
    </div>
    <button type="button" class="add-field">Añadir otra referencia</button>
    </div>
    <input type="submit" name="test" value="Submit">
    </form>
    <script>
    $('.multi-field-wrapper').each(function() {
    var $wrapper = $('.multi-fields', this);
    $(".add-field", $(this)).click(function(e) {
        $('.multi-field:first-child', $wrapper).clone(true).appendTo($wrapper).find('input').val('').focus();
    });
    $('.multi-field .remove-field', $wrapper).click(function() {
        if ($('.multi-field', $wrapper).length > 1)
            $(this).parent('.multi-field').remove();
    });
    });
    </script>
    </body>
    </html>
    

    上面的代码对我有用。请看我的代码

    【讨论】:

    • 我试过你的代码,确实可以。但是,当我将它嵌入到我的表单中时,它不会。我将使用具有相同问题的代码中更简单的部分来编辑第一个问题。也许您可以找到为什么您的表单在我的页面中有效,但如果我将其放入我自己的表单中则不行?非常感谢
    • 不,但我已经发布了答案。这是一个格式错误的 div。谢谢
    【解决方案2】:

    在玩了几个小时后我才明白这一点。 使用 OP 中的信息,无法发现问题所在。我在这里找到了解决方案:Submitting form from different <div> HTML

    基本上,我有这样的结构:

    <div...
    <form...
    </div...
    </form>
    

    我认为没关系,但没想到这会造成影响。因此,不正确的不是 PHP/JS,而是 html 标签。感谢您的宝贵时间。

    【讨论】:

      猜你喜欢
      • 2020-10-10
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      相关资源
      最近更新 更多