.withSuccessHandler(updateName)不执行$(document).ready中的函数

时间:2014-07-22 20:03:03

标签: javascript jquery google-apps-script

我的代码基于开发人员example。当$(document).ready被注释掉但updateName在取消注释时无法执行时,代码会起作用。 google.script.run.withSuccessHandler()如何执行$(document).ready中的函数?

的index.html

<form id="myForm">
  <input name="myName" type="text" />
  <input type="button" value="Submit"
      onclick="google.script.run
          .withSuccessHandler(updateName)
          .processForm(this.parentNode)" />
</form>
<div id="output"></div>


<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script>
<!-- $(document).ready(function(){ -->
  function updateName(myName) {
    var div = document.getElementById('output');
    div.innerHTML = '<p> ' + myName + '</p>';
  }

<!-- )} -->
</script>

code.gs

function doGet() {
  return HtmlService.createHtmlOutputFromFile('index');
}

function processForm(formObject) {
  var myName = formObject.myName;
  Logger.log(formObject.myName);
  return myName
}

1 个答案:

答案 0 :(得分:2)

当您注释掉$(document).ready时,updateName()定义为全局范围。否则,它嵌套在$(document).ready

参考:Nested Functions and Closure

$(document).ready的目的是将页面加载并准备好时要执行的操作括起来。在你的例子中,没有任何事情会发生,因为你所拥有的只是一个函数定义,但没有任何东西可以调用它。