在我的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+"&controllo="+numero+"&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;
}
我不明白为什么参数消失
答案 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错误。