2013-05-03 385 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