2013-05-03 93 views
0

我正在使用HtmlService将简单表单​​提交给我的脚本进行处理。我使用jQuery来执行输入验证等操作。我创建了一个表格,并为我的提交按钮formSubmit()功能:google.script.run.withSuccessHandler()创建问题

<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

我无法看到此问题。我写了一个完美的小应用程序。也许在你的客户端代码的其他地方有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(仅供查看)。

+0

运行更简单的脚本进程时,我获得了积极的结果。该脚本使用GmailLabel,并对其进行各种处理。如果标签相对较小,则按要求工作。如果它有300多条消息 - 那么我会看到这些错误(间歇性地,多数情况下)。 您可以查看源代码[此处](https://script.google.com/d/17wP1wqdcShrn5_agDT3NInziKB5_8Y0oNafcUanK1R5RLw2kdVy-T2du/edit?usp=sharing)以及脚本[此处](https://script.google。 COM /宏/ S/AKfycbzThjETaVtipox9aDTqCiaRCPMHCtyp6yHzhzYyStq8WlCGH8M/EXEC)。 – Greg 2013-05-14 21:55:13

+0

另外,我使用UiApp构建了一个界面,并且它的行为方式相同。直到几个星期前,剧本才按照需要工作。当我恢复它们时,以前的工作版本也表现得如此。我可以通过创建一个调用clickHandler函数的函数并手动向它传递参数,从编辑器中成功运行脚本。 – Greg 2013-05-14 22:02:35

+0

格雷格 - 大概,您的手术重新尝试之前多久?你可以看看Chrome开发工具,看看是否有新的HTTP调用?请参阅此处的信息 - https://developers.google.com/chrome-developer-tools/docs/network – 2013-05-22 22:41:31