Google Apps脚本json数据在javascript中未定义
我试图使用javascript来显示数据,但是当我从服务器函数中获取数据时,数据变得未定义。数据通过jsonlint并尝试使用JSON.parse会导致意外的令牌错误。当从javascript访问时,为什么类型会改变?我如何访问数据 代码G.gs:Google Apps脚本json数据在javascript中未定义,javascript,jquery,json,google-apps-script,Javascript,Jquery,Json,Google Apps Script,我试图使用javascript来显示数据,但是当我从服务器函数中获取数据时,数据变得未定义。数据通过jsonlint并尝试使用JSON.parse会导致意外的令牌错误。当从javascript访问时,为什么类型会改变?我如何访问数据 代码G.gs: function getAppMenus(appID) { var files = DriveApp.getFilesByName("Json.json"); var file = files.next(); data = file.ge
function getAppMenus(appID)
{
var files = DriveApp.getFilesByName("Json.json");
var file = files.next();
data = file.getAs("json").getDataAsString()
data = JSON.stringify(data);
//data = JSON.parse(data);
Logger.log(typeof(data));
return data;
}
记录器说类型是字符串
$('document').ready(function()
{
var menuData = google.script.run.getAppMenus("123");
alert("type is:"+typeof(menuData));
//menuData = JSON.stringify(menuData);
//menuData = JSON.parse(menuData);
//$("#main").append(menuData);
alert(menuData);
alert("fin");
});
警报表示类型未定义
日志:
Json.Json:
{
"options": {
"option": [
{
"name": "asdf",
"stuff": "true"
},
{
"name": "fdsa",
"stuff": "false"
}
]
}
}
您最初使用的
JSON.parse()
是正确的,但出现了语法错误:data=file.getAs(“JSON”).getDataAsString()
后面没有分号。这正如您所期望的:
函数getAppMenus(appID){
var files=DriveApp.getFilesByName(“Json.Json”);
var file=files.next();
var data=file.getAs(“json”).getDataAsString();
//data=JSON.stringify(数据);
data=JSON.parse(数据);
Logger.log(数据类型);
Logger.log(数据);
返回数据;
}
已解决!
事实证明,要通过JS加载数据,需要对服务器进行异步调用。
在js中:
<script>
google.script.run.withSuccessHandler(displayButtons).getAppMenus("123");
function displayButtons(data)
{
dataToDisplay = JSON.parse(data);
alert(dataToDisplay);
}
</script>
google.script.run.withSuccessHandler(displayButtons).getAppMenus(“123”);
功能显示按钮(数据)
{
dataToDisplay=JSON.parse(数据);
警报(数据显示);
}
ah,这并不是真正的问题,因为分号在Javascript中是可选的。如果我删除分号,我会得到您最初在问题中指定的错误。如果我把它放回原处,那么一切正常:日志显示“object”,然后是一个格式正确的对象。
<script>
google.script.run.withSuccessHandler(displayButtons).getAppMenus("123");
function displayButtons(data)
{
dataToDisplay = JSON.parse(data);
alert(dataToDisplay);
}
</script>