我的表格:https://docs.google.com/spreadsheets/d/1pruXYXrbITR7CoQXZG1I1kyS4DahYBXmGMDEK2T6MpY/edit?usp=sharing
我正在使用Google工作表将JSON数据显示在我的网站上,但我想将一些数据放入数组中,因此它不会在网站上重复出现。
例如,这就是它的显示方式,但我希望能够为每个组(zouk,zen等)设置一个标题,然后将所有成员放在一个标题下。 https://www.kentunion.co.uk/test1/
所以我试图找出一些将一个组的所有位置添加到数组中的javascript。从这里开始:
"Zouk Society" : {
"name" : "Zouk Society",
"position" : "President",
"member" : "Currently Vacant"
},
"Zouk Society" : {
"name" : "Zouk Society",
"position" : "Secretary",
"member" : "Currently Vacant"
},
"Zouk Society" : {
"name" : "Zouk Society",
"position" : "Treasurer",
"member" : "Currently Vacant"
}
到此:
"Zouk Society" [{
"position" : "President",
"member" : "Currently Vacant"
},
{
"position" : "Secretary",
"member" : "Currently Vacant"
},
{
"position" : "Treasurer",
"member" : "Currently Vacant"
}
]
我尝试了以下JS,但我只是从中得到错误:
// ID of the Google Spreadsheet
var spreadsheetID = "1pruXYXrbITR7CoQXZG1I1kyS4DahYBXmGMDEK2T6MpY";
// Make sure it is public or set to Anyone with link can view
var url = "https://spreadsheets.google.com/feeds/list/1pruXYXrbITR7CoQXZG1I1kyS4DahYBXmGMDEK2T6MpY/od6/public/values?alt=json";
$(document).ready(function () {
$.getJSON(url, function(data) {
var entry = data.feed.entry;
$(entry).each(function(){
// Column names are name, age, etc.
$('.results').prepend('<h2>'+this.gsx$name.$t+'</h2><p>'+this.gsx$position.$t+'</p><p>'+this.gsx$member.$t+'</p>');
});
});
var grouped = {};
entry.forEach(function (a) {
grouped[a.name] = grouped[a.name] || [];
grouped[a.name].push({ position: a.position, member: a.member });
});
document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>');
});
这是我得到的错误:
未捕获的ReferenceError:未定义条目 HTMLDocument的。 (scripts.js中:19)
答案 0 :(得分:1)
您无法访问回调范围之外的条目。
在回调中进行分组,如下所示:
// ID of the Google Spreadsheet
var spreadsheetID = "1pruXYXrbITR7CoQXZG1I1kyS4DahYBXmGMDEK2T6MpY";
// Make sure it is public or set to Anyone with link can view
var url = "https://spreadsheets.google.com/feeds/list/1pruXYXrbITR7CoQXZG1I1kyS4DahYBXmGMDEK2T6MpY/od6/public/values?alt=json";
$(document).ready(function () {
$.getJSON(url, function(data) {
var entry = data.feed.entry;
$(entry).each(function(){
// Column names are name, age, etc.
$('.results').prepend('<h2>'+this.gsx$name.$t+'</h2><p>'+this.gsx$position.$t+'</p><p>'+this.gsx$member.$t+'</p>');
});
var grouped = {};
entry.forEach(function (a) {
grouped[a.gsx$name.$t] = grouped[a.gsx$name.$t] || [];
grouped[a.gsx$name.$t].push({ position: a.gsx$position.$t, member: a.gsx$member.$t });
});
document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>');
});
});
答案 1 :(得分:0)
您不能将<field name="emp_img" readonly="1" widget='image' class="oe_left oe_avatar" />
数据转换为对象。您应该将push
更改为var grouped = {}
。然后,您可以将每个元素推送到此对象数组,并使用此语法var grouped = []
访问它们。
我不明白你的特殊问题,但&#34;对象阵列&#34;是你问题的解决方案。