【问题标题】:How to POST HTML form using `id` instead of `name`如何使用 `id` 而不是 `name` 发布 HTML 表单
【发布时间】:2015-11-10 17:38:28
【问题描述】:

下面这段代码会通过名字获取元素,我要改成通过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 中将通过类名获取元素,如何更改它们以通过 ID 获取元素??

提前致谢

【问题讨论】:

标签: javascript php element


【解决方案1】:

您不能通过 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(),并将name和id属性分配给表单并编写此

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

【讨论】:

  • 谢谢,你终于给我展示了解决它的方法。谢谢兄弟
  • 永远欢迎@AlexanderRichard 先生。我们都在这里尽我们所能提供帮助。乐意效劳。因为它不是精确的解决方案,而是一条路径。享受编码。来自印度的排灯节快乐。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    这里,以前的帖子也支持它。 previous post

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

    【讨论】:

      猜你喜欢
      • 2019-12-29
      • 2010-12-28
      • 2021-08-31
      • 2016-04-11
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多