#javascript #html #google-apps-script #server-side #client-side
#javascript #HTML #google-apps-script #на стороне сервера #на стороне клиента
Вопрос:
Итак, у меня есть эта проблема уже несколько дней. Я пытаюсь передать данные в свой серверный скрипт, но когда я это делаю, я получаю это сообщение об ошибке. Сообщение об ошибке
Я пробовал смотреть несколько видео на 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>
Как вы можете видеть, я пытаюсь запустить doUpload (data), но он не запускается. Я уже отключил все свои учетные записи, поскольку думал, что это может быть проблемой, но это не так. Пожалуйста, помогите, спасибо!
Комментарии:
1. Возможно, вам следует добавить прослушиватель событий после загрузки html, как в window.onload . Тогда, вероятно, это сработает
2. Вы используете XMLHttpRequest с FormData на стороне клиента для отправки и получения информации с сервера.
3. @StackSlave я не согласен
google.script.run.doUpload(myData);
с этим.4. О, я предполагаю, что ваш html находится в веб-приложении. Так ли это на самом деле?
5. Если этот метод отправляет и получает данные с сервера, он использует
XMLHttpRequest
. Общий вопрос получает общий ответ.
Ответ №1:
У меня это работает так:
<!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>
Проверьте свое представление / выполнение
Комментарии:
1. ДА. Посмотрите на них в view / executions
Dec 21, 2020, 5:12:10 PM Info {first=Laurence} Dec 21, 2020, 5:12:10 PM Info I was called!
2. Я не получаю журналы. Я получаю сообщение о том, что в редакторе не выполняется функция. (Я уже скопировал вставленный ваш код)
3. Посмотрите на них в view / executions
4. Да, это то, что я делаю. Я не знаю, почему, но теперь я получаю null в журнале [20-12-21 18:11:14:243 CST] null [20-12-21 18:11: 14:245 CST] Меня вызвали!
5. Хорошо, проверьте это. Я не получаю это в редакторе, но я исправляю это на панели мониторинга