google.script.run.withSuccessHandler()创建问题

时间:2013-05-03 17:53:04

标签: google-apps-script

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

1 个答案:

答案 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(仅限查看)。