将多维 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
});