2

我正在使用 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 服务。问题是间歇性的。我尝试了其他运行脚本的方法,它们都工作正常。

4

1 回答 1

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被多次调用,那么我会看到多个我看不到的弹出窗口。

这是正在运行的应用程序这里是源代码(仅供查看)。

于 2013-05-05T20:33:04.220 回答