jquery 尝试使用$_POST[“name of input”]将输入设置为变量,但变量显示为空白

o2rvlv0m  于 2023-08-04  发布在  jQuery
关注(0)|答案(1)|浏览(119)

我目前有一个HTML脚本,它执行以下操作:
有一个下拉菜单,选项为1 - 4之间的数字。
当选择一个值时,相应数量的文本框“出现”在下拉菜单下。然后,用户可以将值输入到文本框中。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script>
  $(document).ready(function() {
    $("#elementreg").on("change", function() {
      var val = $(this).val();

      $('.types').hide(); //hide all
      $(`#${val}`).show(); //show by matching the selected value
    });
  });
</script>

<label for="How Many Chips">How Many Chips?:</label>

<select class="medium" id="elementreg" name="amount">
  <option value="" selected="selected"></option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
</select>

<div class="types" id="1">
  <input name="First Chip ID">
</div>

<div class="types" id="2">
  <input name="First Chip ID">
  <input name="Second Chip ID">
</div>

<div class="types" id="3">
  <input name="First Chip ID">
  <input name="Second Chip ID">
  <input name="Third Chip ID">
</div>

<div class="types" id="4">
  <input name="First Chip ID">
  <input name="Second Chip ID">
  <input name="Third Chip ID">
  <input name="Fourth Chip ID">
</div>

字符串
这部分代码按预期工作,至少在视觉上是这样。
使用php,我想抓住每个非空输入,将其设置为一个变量,并将包含非空芯片ID的字符串写入文本文件。为了实现这一点,我写了以下代码:

<?php>
    //Get the value of the First Chip ID, Second Chip ID, Third Chip ID, 
    //and Fourth Chip ID inputs
    $FirstChipID = "";
    $SecondChipID = "";
    $ThirdChipID = "";
    $FourthChipID = "";

    if (!empty($_POST["First Chip ID"])) {
        $FirstChipID = $_POST["First Chip ID"] . ", ";
    }

    if (!empty($_POST["Second Chip ID"])) {
        $SecondChipID = $_POST["Second Chip ID"] . ", ";;
    }

    if (!empty($_POST["Third Chip ID"])) {
        $ThirdChipID = $_POST["Third Chip ID"] . ", ";;
    }

    if (!empty($_POST["Fourth Chip ID"])) {
        $FourthChipID = $_POST["Fourth Chip ID"] . ", ";; 
    }

    $file = fopen("chipID.txt", "a");
    fwrite($file, $FirstChipID . $SecondChipID . $ThirdChipID .
    $FourthChipID . $Comments . $photo . "\n");
    fclose($file);
?>


但是,当运行代码时,文件显示为空。我是否每次都将芯片ID的值覆盖为空?还是我的逻辑有问题?它是在php部分还是html部分?
任何和所有的指导是非常赞赏。

t3psigkw

t3psigkw1#

目前尚不清楚如何(甚至“如果”)您的form(?)或一系列表单元素被提交到PHP脚本。但是,您发布的代码中有几个缺陷:
1.您的name属性包含 * 空格 。虽然这在HTML中是“允许的”,但当PHP收到请求时, 空格 * 在$_POST超全局中被转换为下划线。因此,您需要读取$_POST["First_Chip_ID"]。建议避免在name属性中使用空格。
1.您在HTML中有多个input元素示例,它们具有相同的name。例如,您有四个<input name="First Chip ID">元素。除非你有一些(“黑客”)JavaScript只提取你感兴趣的值(为了构造POST请求),否则普通的form提交只会POST每个表单元素的最后一个示例--它可能不是你感兴趣的(当前)值。
您应该确保每个命名的input元素只有一个示例。然后,您需要更改脚本,以便仅隐藏/显示相同的input元素。也许可以同时在“hidden”元素上切换readonly属性(和/或清除值),尽管您应该检查$_POST['amount']值以确定在PHP脚本中检查哪些字段。

相关问题