Javascript 如何在客户端运行服务器端的功能?

Javascript 如何在客户端运行服务器端的功能?,javascript,html,google-apps-script,server-side,client-side,Javascript,Html,Google Apps Script,Server Side,Client Side,所以我已经有好几天了。我试图将数据传递到服务器端脚本中,但当我这样做时,会收到此错误消息。 我试着在youtube上看了几个视频,他们都说了同样的话,你必须使用google.script.run。运行后调用的函数会出现问题。下面是我使用的代码示例 function doGet() { var output = HtmlService.createTemplateFromFile("index"); output.content = "New string

所以我已经有好几天了。我试图将数据传递到服务器端脚本中,但当我这样做时,会收到此错误消息。

我试着在youtube上看了几个视频,他们都说了同样的话,你必须使用google.script.run。运行后调用的函数会出现问题。下面是我使用的代码示例

function doGet() {
  var output = HtmlService.createTemplateFromFile("index");
  output.content = "New string being passed";
  return output.evaluate();
}
function doUpload(data){
  logger.log(data);
  Logger.log("I was called!")
}
  
  <!DOCTYPE html>
  <html>
  <head>
    <meta charset = "utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title><?= content ?></title>
  </head>
  <body>
   <h1><?= content ?></h1>
   <div id="output"></div>
   <form>
   <input type="type" name="first" id="first" value="Laurence">
   <input type="button" id="subButton" value="submit">
   </form>
   <script>
   var output = document.getElementById("output");
   var first = document.getElementById("first");
   document.getElementById("subButton").addEventListener("click", function(e){
   e.preventDefault();
   output.innerHTML = first.value;
   var myData ={"first":first.value};
   console.log("hello");
   google.script.run.doUpload(myData);
   })
   </script>
  </body>
</html>
函数doGet(){
var output=HtmlService.createTemplateFromFile(“索引”);
output.content=“正在传递的新字符串”;
返回输出。evaluate();
}
功能双重加载(数据){
logger.log(数据);
Logger.log(“我被叫了!”)
}
var output=document.getElementById(“输出”);
var first=document.getElementById(“first”);
document.getElementById(“子按钮”).addEventListener(“单击”),函数(e){
e、 预防默认值();
output.innerHTML=first.value;
var myData={“first”:first.value};
console.log(“你好”);
google.script.run.doUpload(myData);
})

正如你所看到的,我正在尝试运行doUpload(数据),但它不会运行。我已经把我所有的账户都注销了,好像我认为这可能是问题所在,但事实并非如此。请帮忙,谢谢

对我来说是这样的:

 <!DOCTYPE html>
  <html>
  <head>
    <meta charset = "utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title><?= content ?></title>
  </head>
  <body>
   <h1><?= content ?></h1>
   <div id="output"></div>
   <form>
   <input type="type" name="first" id="first" value="Laurence">
   <input type="button" id="subButton" value="submit">
   </form>
   <script>
   window.onload=function() {
   var output = document.getElementById("output");
   var first = document.getElementById("first");
   document.getElementById("subButton").addEventListener("click", function(e){
     e.preventDefault();
     output.innerHTML = first.value;
     var myData ={"first":first.value};
     console.log("hello");
     google.script.run.doUpload(myData);
   });
   }
   </script>
  </body>
</html>

window.onload=function(){
var output=document.getElementById(“输出”);
var first=document.getElementById(“first”);
document.getElementById(“子按钮”).addEventListener(“单击”),函数(e){
e、 预防默认值();
output.innerHTML=first.value;
var myData={“first”:first.value};
console.log(“你好”);
google.script.run.doUpload(myData);
});
}

检查您的视图/执行情况

我的工作方式如下:

 <!DOCTYPE html>
  <html>
  <head>
    <meta charset = "utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title><?= content ?></title>
  </head>
  <body>
   <h1><?= content ?></h1>
   <div id="output"></div>
   <form>
   <input type="type" name="first" id="first" value="Laurence">
   <input type="button" id="subButton" value="submit">
   </form>
   <script>
   window.onload=function() {
   var output = document.getElementById("output");
   var first = document.getElementById("first");
   document.getElementById("subButton").addEventListener("click", function(e){
     e.preventDefault();
     output.innerHTML = first.value;
     var myData ={"first":first.value};
     console.log("hello");
     google.script.run.doUpload(myData);
   });
   }
   </script>
  </body>
</html>

window.onload=function(){
var output=document.getElementById(“输出”);
var first=document.getElementById(“first”);
document.getElementById(“子按钮”).addEventListener(“单击”),函数(e){
e、 预防默认值();
output.innerHTML=first.value;
var myData={“first”:first.value};
console.log(“你好”);
google.script.run.doUpload(myData);
});
}


检查您的视图/执行情况

也许您应该在加载html后添加事件侦听器,就像在window.onload中一样。如果您使用客户端的发送和接收来自服务器的信息,它可能会起作用。@StackSlave我不同意
google.script.run.doUpload(myData)应该这样做。哦,我假设你的html是在一个网络应用程序中。是这样吗?如果该方法从服务器发送和接收数据,则使用
XMLHttpRequest
。一般问题得到一般答案。也许你应该在html加载后添加事件侦听器,就像在window.onload中一样。如果您使用客户端的发送和接收来自服务器的信息,它可能会起作用。@StackSlave我不同意
google.script.run.doUpload(myData)应该这样做。哦,我假设你的html是在一个网络应用程序中。是这样吗?如果该方法从服务器发送和接收数据,则使用
XMLHttpRequest
。一般性问题得到一般性的答案。但是你有日志记录吗?是的。在查看/执行
2020年12月21日,下午5:12:10信息{first=Laurence}2020年12月21日,下午5:12:10信息中查看它们我被呼叫了我没有得到日志。我收到一条消息说编辑器上没有正在执行的函数。(我已经复制粘贴了你的代码)在视图/执行中查看它们是的,这就是我正在做的。我不知道为什么,但是现在我在日志上得到了空[20-12-21 18:11:14:243 CST]空[20-12-21 18:11:14:245 CST]我被呼叫了!但是你要记录日志吗?是的。在查看/执行
2020年12月21日,下午5:12:10信息{first=Laurence}2020年12月21日,下午5:12:10信息中查看它们我被呼叫了我没有得到日志。我收到一条消息说编辑器上没有正在执行的函数。(我已经复制粘贴了你的代码)在视图/执行中查看它们是的,这就是我正在做的。我不知道为什么,但是现在我在日志上得到了空[20-12-21 18:11:14:243 CST]空[20-12-21 18:11:14:245 CST]我被呼叫了!