我正在使用HtmlService向我的脚本提交一个简单的表单进行处理。我正在使用jQuery来执行输入验证等操作。我为提交按钮创建了一个表单和formSubmit()
函数:
<input type='button' onclick='formSubmit()' value='Submit' />
对于我的JS:
function formSubmit(){
//verify inputs
//if inputs are good
google.script.run.withSuccessHandler(success).withFailureHandler(fail).submit(document.forms[0]);
}
我已将问题隔离到withSuccessHandler()
,并且它仅在几天前才开始发生。如果存在,它会一遍又一遍地调用我的脚本。有时间隔1分钟,有时每隔2-3分钟。停止执行的唯一方法是关闭浏览器窗口。这是success()
函数:
function success(e){
$('#dialog-body').html(e.body);
$('#loading').fadeOut(100, function (){
$('#btnSubmit').fadeIn(100);
$('#dialog').dialog( "open");
$('#txtEmail').val("");
document.getElementById('txtEmail').disabled=true;
document.getElementById('chkEmail').checked=false;
document.getElementById('chkShare').checked=false;
});
}
*更新:经过一段时间的测试后,我甚至无法确定它只是.withSuccessHandler()
- 似乎任何时候我都使用google.script.run服务。问题是间歇性的。我已经尝试过运行脚本的其他方法,它们都可以正常工作。
答案 0 :(得分:1)
我无法看到这个问题。我写了一个完美的小应用程序。也许在您的客户端代码的其他地方有一个setTimeout
或其他一些循环正在开始?
Code.gs(“服务器端”)
function submit(e) {return 'Recieved ' + e.simpleTextField;}
function doGet(){return HtmlService.createHtmlOutputFromFile('ui');}
ui.html(“客户端”)
<html>
<script>
function formSubmit(){
google.script.run.withSuccessHandler(success).withFailureHandler(fail).submit(document.forms[0]);
}
function success(e){alert(e);}
function fail(e){console.log(e);}
</script>
<body><form>
<input type='text' name='simpleTextField' />
<input type='button' onclick='formSubmit()' value='Submit' />
</form></body>
</html>
这很好用,我只看到一个弹出窗口。如果多次调用success
,那么我会看到多个弹出窗口,我看不到。
以下是应用in action,此处为source code(仅限查看)。