将多维 JSON 对象数组加载到 selectize.js
Load multidimensional JSON array of objects into selectize.js
我想将此 JSON 加载到 selectize:
{"platforms":
[{"id":32,"name":"Sega Saturn","slug":"saturn"},
{"id":14,"name":"Mac","slug":"mac"},
{"id":47,"name":"Virtual Console (Nintendo)","slug":"vc"},
{"id":34,"name":"Android","slug":"android"},
{"id":84,"name":"SG-1000","slug":"sg1000"},
{"id":58,"name":"Super Famicom","slug":"sfam"},
{"id":82,"name":"Web browser","slug":"browser"}]
}
我希望它的操作与 this example provided by the Selectize.js developers 非常相似(不包括每个中的 URL 部分),除了显然不是使用我的 json 的预制 ID 和名称数据。
感谢任何帮助。
我目前尝试使用的代码:
options: [
for (var i = 0; i < platforms.platforms.length; i++)
{
var counter = platforms.platforms[i];
{id: counter.id, title: counter.name},
console.log(counter.name);
}
这是 JSON 在控制台中记录时的样子:
编辑: This is another example that I'm looking at as it uses JSON.
声明变量时,不能在 array/object 中使用 for
。 Javascript 不是像 PHP&HTML.
这样的模板
您还错过了.slug
。试试这个:
var data = JSON.parse('{"platforms":[{"id":32,"name":"Sega Saturn","slug":"saturn"},{"id":14,"name":"Mac","slug":"mac"},{"id":47,"name":"Virtual Console (Nintendo)","slug":"vc"},{"id":34,"name":"Android","slug":"android"},{"id":84,"name":"SG-1000","slug":"sg1000"},{"id":58,"name":"Super Famicom","slug":"sfam"},{"id":82,"name":"Web browser","slug":"browser"}]}');
var options = [];
$.each(data.platforms, function()
{
options.push({
id: this.id,
title: this.name,
url: "hhtp://site.com/"+this.slug
});
});
var $select = $('#select-tools').selectize({
maxItems: null,
valueField: 'id',
labelField: 'title',
searchField: 'title',
options: options,
create: false
});
您显示的代码有几个语法错误。你对JavaScript不是很熟悉吧?
@klenium 是正确的,无论是在他的建议中,还是通过展示一个可以独立 运行 的完整代码。你应该去像 Plunkr 或 JSFiddle 这样的网站,添加正确的导入,运行 这段代码在那里,如果它没有达到你的预期,把 link 放到页面,所以我们可以检查出什么问题了。
注意:Selectize 的一个优点是它可以在不进行预处理的情况下获取几乎所有数据,因此代码可能(未经测试!)简化为:
var $select = $('#select-tools').selectize({
maxItems: null,
valueField: 'id',
labelField: 'title',
searchField: 'title',
options: data.platforms, // Just use the Json data as it is
create: false
});
我想将此 JSON 加载到 selectize:
{"platforms":
[{"id":32,"name":"Sega Saturn","slug":"saturn"},
{"id":14,"name":"Mac","slug":"mac"},
{"id":47,"name":"Virtual Console (Nintendo)","slug":"vc"},
{"id":34,"name":"Android","slug":"android"},
{"id":84,"name":"SG-1000","slug":"sg1000"},
{"id":58,"name":"Super Famicom","slug":"sfam"},
{"id":82,"name":"Web browser","slug":"browser"}]
}
我希望它的操作与 this example provided by the Selectize.js developers 非常相似(不包括每个中的 URL 部分),除了显然不是使用我的 json 的预制 ID 和名称数据。
感谢任何帮助。
我目前尝试使用的代码:
options: [
for (var i = 0; i < platforms.platforms.length; i++)
{
var counter = platforms.platforms[i];
{id: counter.id, title: counter.name},
console.log(counter.name);
}
这是 JSON 在控制台中记录时的样子:
编辑: This is another example that I'm looking at as it uses JSON.
声明变量时,不能在 array/object 中使用 for
。 Javascript 不是像 PHP&HTML.
您还错过了.slug
。试试这个:
var data = JSON.parse('{"platforms":[{"id":32,"name":"Sega Saturn","slug":"saturn"},{"id":14,"name":"Mac","slug":"mac"},{"id":47,"name":"Virtual Console (Nintendo)","slug":"vc"},{"id":34,"name":"Android","slug":"android"},{"id":84,"name":"SG-1000","slug":"sg1000"},{"id":58,"name":"Super Famicom","slug":"sfam"},{"id":82,"name":"Web browser","slug":"browser"}]}');
var options = [];
$.each(data.platforms, function()
{
options.push({
id: this.id,
title: this.name,
url: "hhtp://site.com/"+this.slug
});
});
var $select = $('#select-tools').selectize({
maxItems: null,
valueField: 'id',
labelField: 'title',
searchField: 'title',
options: options,
create: false
});
您显示的代码有几个语法错误。你对JavaScript不是很熟悉吧?
@klenium 是正确的,无论是在他的建议中,还是通过展示一个可以独立 运行 的完整代码。你应该去像 Plunkr 或 JSFiddle 这样的网站,添加正确的导入,运行 这段代码在那里,如果它没有达到你的预期,把 link 放到页面,所以我们可以检查出什么问题了。
注意:Selectize 的一个优点是它可以在不进行预处理的情况下获取几乎所有数据,因此代码可能(未经测试!)简化为:
var $select = $('#select-tools').selectize({
maxItems: null,
valueField: 'id',
labelField: 'title',
searchField: 'title',
options: data.platforms, // Just use the Json data as it is
create: false
});