我对JSON格式有疑问。我是新手,所以我不知道是什么问题。在google app脚本中,我有这个get函数
function doGet() {
var htmlTemplate = HtmlService.createTemplateFromFile('html');
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1_cj_HO2oN6CYe_Pb7Cy8S3yVtwKW8Efr-Sdyf1Sk8Ts/edit#gid=2009573145");
htmlTemplate.dataFromServerTemplate = makeJSON(getRowsData_(ss.getSheetByName("Foglio8"),getExportOptions()),getExportOptions());
var htmlOutput = htmlTemplate.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('sample');
return htmlOutput;
}
现在,这是HTML无效的部分
<div>
<p id="tx"></p>
</div>
<script type="text/javascript">
var data = <?!=JSON.stringify(dataFromServerTemplate) ?>;
function caric(){
document.getElementById("tx").innerText= data.saldo;}
</script>
</body>
函数caric()
运行页面的onload
。 “ saldo”实际上包含在此JSON中。
如果我使用data.saldo
,我会收到undefined
,但是如果我仅使用data
,它将起作用并打印JSON中包含的所有内容。
您知道我在做什么错吗? 谢谢
答案 0 :(得分:-1)
JSON.stringify产生一个字符串而不是一个对象。在服务器代码中,您应该执行以下操作。
var obj = { name: "me", gender: "male", eyes: "blue" };
htmlTemplate.dataFromServerTemplate = JSON.stringify(obj);
在客户端这
var data = JSON.parse(<?= dataFromServerTemplate ?>);
(function caric(){
document.getElementById("tx").innerText= data.name;}());