【问题标题】:PHP can't get post data from jQuery dynamic methodPHP 无法从 jQuery 动态方法中获取 post 数据
【发布时间】:2020-02-17 09:50:12
【问题描述】:

我在 Jquery 中使用.after 方法插入 html 元素。

这是我的 Jquery 代码

$('#add_terms').click(function () {
  var i = $('#terms>textarea').length;
  $terms = $('#terms' + i);
  i++;
  console.log($terms);
  $terms.after('<br><br>' + i + '.    <textarea id="terms' + i + '" name="terms[]" ' + 'cols="60" rows="2" style="vertical-align:middle;"></textarea>');
})

我的html:

 <table width="98%" cellspacing="1" cellpadding="3" style="border-collapse:separate; border-spacing:0px 10px;">
<form method="post" enctype="multipart/form-data" name="form1" id="form1" action='' target="_self">
<tr>
  <td align="center"> terms</td>
  <td id="terms">
    1.
    <textarea id="terms1" name="terms[]" cols="60" rows="2"
      style="vertical-align:middle;"><?php echo $terms1?></textarea>
    <br><br>
    2.
    <textarea id="terms2" name="terms[]" cols="60" rows="2"
      style="vertical-align:middle;"><?php echo $terms2?></textarea>
    <br>

    <input id="add_terms" name="add_terms" type="button" class="bt-add" value="add" style="margin-top:10px">
  </td>
</tr>
<tr>
<td colspan="2" align="center">
<input id="add" name="add" type="submit">
<input id="clear" name="clear" type="reset"  class="bt-return">
</td>
</tr>
</form>
</table>

我发布表单,然后我可以使用

获得 terms1 和 terms2 的值

print_r($_POST['terms']);

但是,我无法获得terms3terms4 的值。

【问题讨论】:

  • 我实际上并没有在这段代码的任何地方看到任何形式的发送 POST 请求。所以我最好的猜测是,根本不会发布数据。那里应该有一个表单提交或一个 AJAX 请求,它发送一个带有所需数据的 POST 请求
  • 您的输入是否在&lt;form&gt; 标签内?
  • 为了缩短篇幅,我没有在我的问题中发帖。我已经编辑了。
  • 您需要停止在您的 HTML 中创建无效嵌套,否则浏览器的错误更正很可能会由此创建一个 DOM,这与您的预期非常不同。您不能将 form 嵌套到这样的表格中 - 它要么必须绕过完整的 table 元素,要么包含在单个表格单元格中,td
  • 谢谢大家。我找到了重点。我把我的form标签放在table标签外面。然后它就可以了

标签: php jquery html forms


【解决方案1】:

希望对您有所帮助。

<form method="post" enctype="multipart/form-data" name="form1" id="form1" action='' target="_self">
  <td align="center"> terms</td>
  <td id="terms">
    1.
    <textarea id="terms1" name="terms[]" cols="60" rows="2"
      style="vertical-align:middle;"><?php echo $terms1?></textarea>
    <br><br>
    2.
    <textarea id="terms2" name="terms[]" cols="60" rows="2"
      style="vertical-align:middle;"><?php echo $terms2?></textarea>
    <br>

    <input id="add_terms" name="add_terms" type="submit" class="bt-add" value="add" style="margin-top:10px">
  </td>
</form>

【讨论】:

  • 使用添加按钮的用户只是试图动态添加一个新的文本区域而不是提交表单。
  • 请在您的答案中添加一些解释,以便其他人可以从中学习 - 您改变了什么,为什么?
  • @Nico Haase 谢谢你的回复。将 input type="button" 更改为 type="submit"
  • 请通过编辑将所有解释添加到答案本身,这也应该包含您更改的原因
  • 我已经检查过了,我不知道为什么会这样,但实际上 jquery 是写在那个按钮上以添加更多字段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多