Я пытаюсь отправить данные в свой скрипт Google (я просто узнаю, как это работает), но понимаю, что получаю.
Первый cdoe. Страница Spimple (для тестирования) на моем локальном компьютере.
test6.html
<!DOCTYPE html>
<html lang='pl'>
<head>
<meta charset='utf-8'>
</head>
<body>
<div onclick = "A1()"> TEST </div>
</body>
<script
src = "http://code.jquery.com/jquery-3.3.1.min.js"
integrity = "sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8 = "
crossorigin = "anonymous"></script>
<script type = "application/javascript">
$.ajaxSetup({
url: "https://script.google.com/macros/s/****/exec",
type: "post",
});
function A1() {
var d1 = { test1 : "pass1" };
var d2 = JSON.stringify(d1);
var res = $.ajax ({
data: d1
});
res.done(function (odpserv, textStatus, jqXHR) {
console.info(odpserv);
console.info(textStatus);
console.info(jqXHR);
});
}
</script>code.gs
function doPost(e){
var SS = SpreadsheetApp.openById('****');
var sh = SS.getSheetByName('A');
sh.appendRow([e]);
return ContentService.createTextOutput("OK").setMimeType(ContentService.MimeType.JSON);
}1. Если я отправлю данные jQuery - d1 - я ожидаю получить:
{ test1 : "pass1" }
но я получаю
{parameter = {test1=pass1}, contextPath=, contentLength=11, queryString=, parameters = {test1=[Ljava.lang.Object;@45c41746}, postData=FileUpload}
Если я отправлю d2, я получу
{parameter = {{"test1":"pass1"}=}, contextPath=, contentLength=17, queryString=, parameters = {{"test1":"pass1"}=[Ljava.lang.Object;@7ec35331}, postData=FileUpload}
Кто-нибудь может это объяснить? Почему я получаю дополнительные парметры?
var d1 = { test1 : "pass1" };
поэтому в code.gs я могу брать данные: var r1 = e.parameter.test1 // pass1
бу, когда я отправляю
var d2 = JSON.stringify(d1);
var r1 = e.parameter.test1 // undefined
Как мне получить полученные данные?
Все еще что-то не так. <code> var d1 = {test1: "pass1"}; var d2 = JSON.stringify (d1); </code> Если я отправлю "d2", <code> var d1 = JSON.parse (e.parameter); </code> выдает ошибку <code> Неожиданный токен: o, SyntaxError </code>

Если вы не знаете, что искать, вы никогда этого не найдете
Ответ / вопрос:
Опубликовать данные Google скрыть в parameters
Чтобы прочитать это, используйте:
e.postData.contents
Неудивительно, что если вы строковите ввод перед его отправкой, он не будет восприниматься как объект. Таким образом, при отправке
d2вы должны сначала де стрингировать:var d1 = JSON.parse(e.parameter); var r1 = d1.test1;