如何使用 `id` 而不是 `name` POST HTML 表单

How to POST HTML form using `id` instead of `name`

下面这段代码是按名称获取元素,我要改成按ID获取元素,如何实现?

<?
if($_SERVER["REQUEST_METHOD"] == "POST" && array_key_exists("calculateFormSubmit", $_POST)) {
    $connectionData = ["server" => "","user" => "","pass" => "","database" => ""];
    $db = null;
    try {
      $db = new PDO("mysql:host=" . $connectionData["server"] . ";dbname=" . $connectionData["database"], $connectionData["user"], $connectionData["pass"]);
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } 
    catch(PDOException $e) {
      echo $e->getMessage();
    }

    $dateFrom = (int)$_POST["YearBox"] . "-" . (int)$_POST["gmonth"] . "-" . (int)$_POST["gday1"];
    $dateTo = (int)$_POST["gyear2"] . "-" . (int)$_POST["gmonth2"] . "-" . (int)$_POST["gday2"];
    $stmt = $db->prepare("SELECT SUM(rialamount) as sum_result FROM problem_tbl WHERE opening_date BETWEEN STR_TO_DATE(:date_from, '%Y-%c-%e') AND STR_TO_DATE(:date_to, '%Y-%c-%e')");

    $stmt->bindValue(":date_from", $dateFrom);
    $stmt->bindValue(":date_to", $dateTo);
    $stmt->execute();
    $userData = $stmt->fetchAll(PDO::FETCH_ASSOC);

    if($userData != false) {
    foreach ($userData as $idPatient) {
            header('Content-Type: text/html; charset=utf-8');
            echo "<p>Text Here </p>\n";
            echo "<div id=\"rialamount\" style=\"text-shadow: 2px 2px 5px #0B4D09; font-size: 140%;\">\n";
            echo       "<b>" .  ['']  .        "<b> - "  . $idPatient["sum_result"] . "<br />";
            echo "</div>\n";
    }
    }

    if($db !== null) {
        $db = null;
    }
}
?>

$dateFrom$dateTo 中将通过 class 名称获取元素,如何更改它们以获取元素按 ID ??

提前致谢

默认情况下,HTML form 提交以元素的 name 属性为关键字的值。

您可以使用 JavaScript 修改此行为,方法是编写一个函数来处理表单的 onsubmit 操作并自行执行提交。

  1. 当用户点击 <input type="submit"> 或以其他方式提交表单时,submit 事件被触发
  2. 如果您有一个 JavaScript 函数设置为处理 onsubmit,它将在此时被调用
  3. 然后您的函数应该创建一个 HTTP POST 请求到所需的服务器资源(即在表单的 action 属性中指定并包含问题中的代码的资源)。随此请求发送的 POST 数据可以输入 ID 或您希望使用的任何其他标识符。
  4. 然后您的函数应该取消由浏览器发起的表单提交(例如 return false

你不能这样做,我在某处读到我们可以在 HTML 4.01 之后仅通过它们的名称来控制元素。

这里,前面的post也支持。 previous post

但是,如果你真的想通过id访问它,那么你必须使用ajax调用来向服务器发送数据。在 ajax 调用中,您可以通过其 Id 访问元素。

您无法通过 ID 在 php 中检索数据,它适用于名称..因此您需要更改

PHP

<form method="POST" action="nextpage.php" name="myform" id="myform">
    <input type="text" id="rout_markers"  name="rout_markers"/>
    <input type="hidden" name="someNewName" id="someNewName" value="" />
    <input type="submit" id="send-btn"  class="button" value="SEND NOW" onclick="submitform()" />
</form>

jQuery

$("form").bind('submit',function(e){
  e.preventDefault();
  var hiddenData=$("input[name=rout_markers]").val();
  // or var hiddenData=jQuery('#rout_markers').val(); 
  $("input[type=hidden][name=someNewName]").val(hiddenData);  
});

nextpage.php

通过以下方式检索数据

$_POST['someNewName'];

更新

在提交按钮中设置 onclick=submitform() 并分配 nameid 属性以形成并写入此

javascript

<script type="text/javascript">
    function submitform()
    {
        var hiddenData = document.getElementById('rout_markers').value;
        document.getElementById('someNewName').value = hiddenData;
        document.myform.submit();
    }
</script>

有关详细信息,请单击 getting values from ID instead of name