为什么当我单击提交时表单的参数消失了?

时间:2019-01-31 14:24:35

标签: javascript gas appscript form-parameter

在我的google app脚本中,我有一个html页,其中包含一个表单,其action属性是根据输入值(使用javascript)动态创建的,并且我使用参数创建了动作url。之后,我插入一些输入值,便正确创建了操作网址(我检查了代码),但是当我单击“提交”按钮时,操作网址打开了,但没有参数。

我尝试使用get,post方法,但是我得到了一些结果,新的url被打开但没有参数,只有“?”字符。但是,如果我对link和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;
}

我不明白为什么参数消失

1 个答案:

答案 0 :(得分:-1)

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

查询字符串(使用JavaScript添加)从查询字符串中删除,并被成功的表单控件中的数据构造的查询字符串替换。

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


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

只需在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>

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