HTML 形式的数组仅在使用 var_dump() 检查时才产生第一个结果

Posted

技术标签:

【中文标题】HTML 形式的数组仅在使用 var_dump() 检查时才产生第一个结果【英文标题】:Array in HTML form is only producing the very first result when checking with var_dump() 【发布时间】:2017-02-20 08:10:28 【问题描述】:

这是生成表单的 html 和 jQuery(它所做的只是允许用户创建另一个具有相同名称的输入字段:skillName[]skillLevel[]):

$(document).ready(function() 
  var max_fields = 100;
  var wrapper = $(".wrapper");
  var add_button = $(".new-skill-field");

  var i = 1;
  $(document).on("click", ".new-skill-field", function(e) 

    e.preventDefault();
    if (i < max_fields) 
      i++;
      $(wrapper).append('<div><label>Skill Name:</label><input type="text" name="skillName[]"><label>Skill Level:</label><input type="text" name="skillLevel[]" class="input-small"><button class="remove-skill">Remove This Skill</button><br></div>');
    
  );

  $(wrapper).on("click", ".remove-skill", function(e) 
    e.preventDefault();
    $(this).parent('div').remove();
    i--;
  );
);
<script src="//code.jquery.com/jquery-3.1.1.min.js"></script>

<div class="wrapper">
  <div>
    <label>Skill Name:</label>
    <input type="text" name="skillName[]" id="skillName">
    <label>Skill Level:</label>
    <input type="text" name="skillLevel[]" id="skillLevel" class="input-small">
    <br>
  </div>
</div>
<button class="new-skill-field">Add Another Skill</button>

View on JSFiddle

无论我创建多少字段并向其中输入值,如果我的 php 脚本只是 var_dump($_POST['skillName']),它只返回一个值:第一个输入字段。我知道这行得通,就像我过去做过的那样。我只是不明白为什么这个表单,或者这个 jQuery,导致它只在数组中传递一个值。

是的,我确实需要以表格形式对数组进行编码......没有其他方法可以将数组传递给我的班级并让它做我需要做的事情。

【问题讨论】:

你的 PHP 在哪里? @nerdlyist 我说我现在唯一要做的就是简单地使用 var_dump() 数组来查看正在显示的内容,这只是表单中的 1 个值。 这非常令人困惑。只需var_dump($_POST) 我正在这样做。就像我原来的帖子说的那样,即使我有 3 个数据输入字段,由于某种原因,当我执行 var_dump($_POST) 时,只有 1 个被传递到变量中。 我明白你现在在做什么。您可以在提交时发布您拥有的表单 html 吗? 【参考方案1】:

好的,这是我(尽管很短)的编程生涯中发生的最奇怪的事情之一......我没有触及任何代码中的任何内容,我刷新了页面以检查 HTTP Live Headers,因为我已经清除了他们。在刷新相同的代码后(在这台计算机上的 3 个不同的浏览器上,在我的 MacBook 上的 2 个和在我的手机上),它随机选取了数组。老实说,我现在不知道发生了什么,但它似乎正在工作......现在。感谢您花时间尝试和帮助!

希望问题不再出现,因为我不知道发生了什么变化导致它获取数组索引!

【讨论】:

一件看起来很奇怪的事情是缺少&lt;form&gt; 元素。也许如果您所有动态创建的 div 都在 &lt;form&gt; 内,您将拥有更好的浏览器兼容性。祝你好运! 我无意中遗漏了表单元素,但它们是典型的 &lt;form action="script.php" method="POST"&gt; ... &lt;/form&gt; 。既然它正在工作,我几乎不敢触摸该文件中的代码,但需要添加更多内容。我想我可能会休息半小时之类的,让我的头脑休息一下,因为我已经把头撞在墙上了 2 个小时,试图弄清楚这一点。

以上是关于HTML 形式的数组仅在使用 var_dump() 检查时才产生第一个结果的主要内容,如果未能解决你的问题,请参考以下文章

echo(),print(),print_r(),var_dump的区别?

echo print() print_r() var_dump()的区别

PHP 的替代 var_dump 允许限制嵌套数组的深度

仅在某些页面上填充代码的 Javascript ES6 数组循环

cakephp 将数组记录为 var_dump

如何让 xdebug var_dump 显示完整的对象/数组