google.script.run.withSuccessHandler(的onSuccess)。 onSuccess在构造函数中不起作用

时间:2016-03-09 22:32:11

标签: javascript html google-app-engine web-applications

在Google Apps脚本Web应用程序中使用客户端 - 服务器通信时遇到一些问题。

我的code.gs包含:

function loadPetName() {
  Logger.log('Client ask a Pet Name');

  // use Google apps UserProperties as default storage
  var storage = PropertiesService.getUserProperties();

  return JSON.parse(storage.getProperty('name');
}

Pet.html是:

<script>
// CLASS Pet
function Pet() {

  // CONSTRUCTOR
  console.log('Creating new Pet');
  var petName;

  // Get pet name from outer storage
  console.log('Loading pet name from storage...');
  google.script.run.withSuccessHandler(onSuccessLoad).loadPetName();
  var onSuccessLoad = function(name) {
    console.log('run onSuccessLoad');
    this.petName = name;
    alert('Pet Name is ' + name)
  };

  // METHODS ...
}
</script>

init.html是:

<script>
function init() {
  console.log('Initialization');
  var cat = new Pet();
}
</script>

index.html包含:

<body onload=init()>
  ...

在浏览器中打开index.html后,我在控制台中看到:

Initialization
Creating new Pet
Loading Pet Name from storage...

但是没有“run onSuccessLoad”。

在Google Script控制台中,我们可以看到:“客户询问宠物名称”。一切正常,但onSuccessLoad函数没有运行。

如果在Pet.html中我们替换

google.script.run.withSuccessHandler(onSuccessLoad).loadPetName();

google.script.run.withSuccessHandler(console.log('SuccessHandler fired')).loadPetName();

我们将在控制台中看到:“SuccessHandler被解雇了。”

我的问题在哪里?

谢谢!

1 个答案:

答案 0 :(得分:0)

我发现了一个错误......天啊!

此代码不起作用:

google.script.run.withSuccessHandler(onSuccessLoad).loadPetName();

var onSuccessLoad = function(name) {
  console.log('run onSuccessLoad');
  this.petName = name;
};

但是这段代码很好用:

var onSuccessLoad = function(name) {
  console.log('run onSuccessLoad');
  this.petName = name;
};

google.script.run.withSuccessHandler(onSuccessLoad).loadPetName();

但为什么?! (抱歉这个愚蠢的问题)。