为什么具有空值的对象键对不再从服务器传递到客户端?
Why is object key pair with null value not passed from server to client anymore?
我有一个 Google 应用程序脚本 Web 应用程序,我在其中使用 google.script.run.withSuccessHandler
。服务器端函数 returns 一个所有值为空的对象。 MaterializeCSS autocomplete 需要空值
我的客户今天报告 GAS 网络停止工作。之前工作是 10000000%。我发现原因是 null
作为一个值。
工作示例应用程序在这里
HTML代码
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
Test
<script type="text/javascript">
console.log("test")
document.addEventListener("DOMContentLoaded", function(event) {
google.script.run.withSuccessHandler(afterDataReceived)
.returnObject()
});
function afterDataReceived(receivedData){
console.log(receivedData)
}
</script>
</body>
</html>
GS 代码
function doGet(e) {
var htmlTemplate = HtmlService.createTemplateFromFile("index").evaluate()
return htmlTemplate
}
function returnObject(){
var object = {}
object.a = "123"
object.b = null
object.c = 123
console.log(object)
return object
}
有人遇到同样的错误吗?如何解决这个问题?
问题:
如果 null
是对象中 key
的值,当对象从服务器传递到客户端时,键值对丢失,尽管 null
is a legal parameter.I可以确认问题。
解决方案:
问题已报告 here。给这个issue加个star,如果还有人有同样的issue。
作为非法参数的典型解决方法,在服务器端使用 JSON.stringify()
,将 string
传递给客户端,并在客户端传递 JSON.parse()
以获取对象内部的空值。
服务器:
function returnObject(){
return JSON.stringify({a:1,b:null,c:3});
}
客户:
document.addEventListener("DOMContentLoaded",
function(event) {
google.script.run
.withSuccessHandler(afterDataReceived)
.returnObject()
});
function afterDataReceived(receivedData){
console.log(JSON.parse(receivedData));
}
我有一个 Google 应用程序脚本 Web 应用程序,我在其中使用 google.script.run.withSuccessHandler
。服务器端函数 returns 一个所有值为空的对象。 MaterializeCSS autocomplete 需要空值
我的客户今天报告 GAS 网络停止工作。之前工作是 10000000%。我发现原因是 null
作为一个值。
工作示例应用程序在这里
HTML代码
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
Test
<script type="text/javascript">
console.log("test")
document.addEventListener("DOMContentLoaded", function(event) {
google.script.run.withSuccessHandler(afterDataReceived)
.returnObject()
});
function afterDataReceived(receivedData){
console.log(receivedData)
}
</script>
</body>
</html>
GS 代码
function doGet(e) {
var htmlTemplate = HtmlService.createTemplateFromFile("index").evaluate()
return htmlTemplate
}
function returnObject(){
var object = {}
object.a = "123"
object.b = null
object.c = 123
console.log(object)
return object
}
有人遇到同样的错误吗?如何解决这个问题?
问题:
如果 null
是对象中 key
的值,当对象从服务器传递到客户端时,键值对丢失,尽管 null
is a legal parameter.I可以确认问题。
解决方案:
问题已报告 here。给这个issue加个star,如果还有人有同样的issue。
作为非法参数的典型解决方法,在服务器端使用 JSON.stringify()
,将 string
传递给客户端,并在客户端传递 JSON.parse()
以获取对象内部的空值。
服务器:
function returnObject(){
return JSON.stringify({a:1,b:null,c:3});
}
客户:
document.addEventListener("DOMContentLoaded",
function(event) {
google.script.run
.withSuccessHandler(afterDataReceived)
.returnObject()
});
function afterDataReceived(receivedData){
console.log(JSON.parse(receivedData));
}