首页 > 解决方案 > HTML 表单到 Google 电子表格

问题描述

我正在处理将数据提交到 Google 电子表格的 HTML 表单。本教程向我展示了技巧并且对我来说非常完美,尽管它不包括向用户返回她/他提供的信息的确认页面。不知何故,我找到了一种方法,但我无法让确认页面包含用户提供的信息。

我发现了几个与此问题相近的问题,但大多数问题都通过 innerHTML 得到了确认(在表单的底部/顶部添加了小文本,这不是我的意图)和/或我无法使它们工作。

这是我的代码:

</head>
<body>
    <form name="submit-to-google-sheet">
      <input name="email" type="email" placeholder="Email" required><br>
      <input name="nombre" type="text" placeholder="Nombre"><br>
      <input name="apellido" type="text" placeholder="Apellido"><br>

      <button type="submit">Enviar</button>
    </form>
    
    <script>
      const scriptURL = 'https://script.google.com/blabla'
      const form = document.forms['submit-to-google-sheet']
    
      form.addEventListener('submit', e => {
        e.preventDefault()
        fetch(scriptURL, {method: 'POST', body: new FormData(form)})
          .then(response => console.log('Success!', response))
          .catch(error => console.error('Error!', error.message))
        window.location.href = "conf.php";
      })
    </script>
</body>

和确认页面(conf.php):

<head>
    
</head>
<body>
    <p>Text.</p>
    <?php
    setlocale(LC_TIME,"es_ES");
    
    echo 'Nombre: ' . $_POST ["nombre"] . '<br>';
    echo 'Apellido: ' . $_POST ["apellido"] . '<br>';
    echo 'E-mail: ' . $_POST ["email"] . '<br><br>';
    echo strftime("Fecha de inscripción: %A %e de %B de %Y a %H:%M") . '<br>';
    ?>
    <button onclick="imprimir()">Imprimir confirmación</button>
    <p>Text.</p>
    <button onclick="volver()">Volver</button>
    <script>
      function imprimir() {
        window.print();
      }
      function volver()     {
        window.location.href = "index.html";
      }
    </script>
</body>

首先十分感谢。

标签: javascripthtmlforms

解决方案


存在 JavaScript 语法错误。以下无法编译。

function(window.location.href = "confirm.php";)

请改正。

window.location.href = "confirm.php";

毫无疑问,发布请求已发送到https://script.google.com/blabla,其标题中包含表单数据。因此,您可以在 confirm.php 控制此请求并回显结果,如下所示。

//confirm.php
<?php
//get any kinds of data from https://script.google.com/blabla
...
//response the result
echo("<p>Successfully posted!</p><a onclick='window.location.history.back()'>Go back</a>");

推荐阅读