首页 > 解决方案 > 为什么当我点击提交时表单的参数消失了?

问题描述

在我的谷歌应用程序脚本中,我有一个带有表单的 html 页面,其动作属性是根据输入值(使用 javascript)动态创建的,并且我使用参数创建动作 url。之后我插入一些输入值,正确创建了动作 url(我检查了代码),但是当我点击提交按钮时,动作 url 打开但没有参数。

我尝试使用 get, post 方法,但我有一些结果,打开了新的 url 但没有参数,只有“?” 特点。但是,如果我对链接和 href 属性执行相同的过程,它就可以正常工作。我注意到参数没有到达 doget 函数

包括文件 index.html 和 app.gs

<form id="myForm" action="#">
  <div class="form-row">   
       <div class="col">
          <input type="text" class="form-control" placeholder="Numero" id="numero">
      </div>
    <div class="col">
     <div class="form-group">
      <select id="tipologia" class="form-control">
        <option selected>Tipologia supporto</option>
        <option >concorsi</option>
      </select>
    </div>
    </div>
  </div>
    <button type="submit" class="btn-get-started scrollto">Richiedi assistenza Form</button><!--NOT WORK-->
</form>
      <a href="#" id="btn" class="btn-get-started scrollto">Richiedi assistenza</a><!--WORK-->

<script>
 document.getElementById("tipologia").addEventListener("change", redirect);
 function redirect(){
   var nome =document.getElementById("nome").value;
   var numero =document.getElementById("numero").value;

   var opzioni = document.getElementById("tipologia");
   var selezionato = opzioni.options[opzioni.selectedIndex].value;  
   document.getElementById("btn").href="https://script.google.com/macros/s/AKfycbxia-_rMYlvVjrlyGGd7zRcb1CD5hSYe6W-mLldzxY__8I2b3Q/exec?supporto="+selezionato+"&controllo="+numero+"&nome="+nome;
   document.getElementById("myForm").action ="https://script.google.com/macros/s/AKfycbxia-_rMYlvVjrlyGGd7zRcb1CD5hSYe6W-mLldzxY__8I2b3Q/exec?supporto="+selezionato+"&amp;controllo="+numero+"&amp;nome="+nome;

   }
</script>

function doGet(e) {
 Logger.log(e.parameter.supporto);
  var supporto = e.parameter.supporto;
  var numero= e.parameter.controllo;
  var nome= e.parameter.nome;
}

我不明白为什么参数会消失

标签: javascriptgoogle-apps-script

解决方案


当您使用(默认)提交表单时method="GET",将使用 中指定的 URLaction作为基础。

查询字符串(您使用 JavaScript 添加的)已从中删除,并替换为使用来自成功表单控件的数据构建的查询字符串。

由于您的表单控件都没有名称,因此没有一个成功,因此没有数据。这会给你一个空白的查询字符串。


不要尝试使用 JavaScript 设置操作(您做错了:DOMaction属性需要一个纯 URL,而不是 HTML 编码的)。

只需在action属性中设置基本 URL 并为表单控件命名。

<form id="myForm" action="https://script.google.com/macros/s/AKfycbxia-_rMYlvVjrlyGGd7zRcb1CD5hSYe6W-mLldzxY__8I2b3Q/exec">
  <div class="form-row">
    <div class="col">
      <input type="text" class="form-control" name="controllo" placeholder="Numero" id="numero">
    </div>
    <div class="col">
      <div class="form-group">
        <select id="tipologia" name="supporto" class="form-control">
          <option selected>Tipologia supporto</option>
          <option>concorsi</option>
        </select>
      </div>
    </div>
  </div>
  <button type="submit" class="btn-get-started scrollto">Richiedi assistenza Form</button>
</form>

注意,您的代码包含但您的 HTMLvar nome =document.getElementById("nome").value; 中没有匹配项。id这会导致你的 JS 出错。


推荐阅读