无法从<!-?!= JSON.stringify(dataFromServerTemplate)中包含的数据中选择特定元素?->

时间:2018-08-15 10:21:41

标签: javascript json html5 google-apps-script

我对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中包含的所有内容。

您知道我在做什么错吗? 谢谢

1 个答案:

答案 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;}());