selectize.js和ajax的问题

时间:2016-04-06 14:15:59

标签: javascript jquery ajax selectize.js

在我看来,我有以下代码,并且我试图让选择框下拉,并使用回调发送的值,但不幸的是它不起作用。

我正在关注http://maxoffsky.com/code-blog/laravel-shop-tutorial-3-implementing-smart-search/,稍微改变一下她的用例。

<script>

    $(document).ready(function(){
        var root = '{{url("/")}}';

        $('#testselect').selectize({
            valueField: 'url',
            labelField: 'description',
            searchField: ['description'],
            maxOptions: 10,
            options: [],
            create: true,
            render: {
                option: function(data, escape) {
                    return '<div>' + escape(data.description) + '</div>';
                }
            },
            optgroups: [
                {value: 'description', label: 'description'},
            ],
            load: function(query, callback) {
                if (!query.length) return callback();
                $.ajax({
                    url: root+'/gettimecodes',
                    type: 'GET',
                    dataType: 'json',
                    data: {
                        q: query
                    },
                    error: function() {
                        callback();
                    },
                    success: function(res) {
                        console.log(res.data) // Prints my data all well and good.
                        var object = {description:"description"};
                        var array = ["Saab", "Volvo", "BMW"];
                        var json = {
                            "data":[
                                {"description":"Saab"},
                                {"description":"Volvo"},
                                {"description":"BMW"}
                            ]
                        }
                        // callback(array); // Doesn't work. (Array)
                        // callback(object); // Doesn't work (Object)
                        // callback(json); // Doesn't work (JSON)
                    }
                });
            },
        });
    });

</script>

如果有人能指出我正确的方向,我们将不胜感激!

更新了bashers recomendations。

            $('#testselect').selectize({
            valueField: 'description',
            labelField: 'description',
            searchField: ['description'],
            maxOptions: 10,
            options: [],
            create: true,
            render: {
                option: function(data, escape) {
                    return '<div>' + escape(data.description) + '</div>';
                }
            },
            load: function(query, callback) {
                if (!query.length) return callback();
                $.ajax({
                    url: '/gettimecodes',
                    type: 'GET',
                    data: {
                        q: query
                    },
                    error: function() {
                        callback();
                    },
                    success: function(res) {
                        callback(res.data)
                    }
                });
            },
        });

响应中返回的JSON

{"data":[{"description":"Crushed blacks "},{"description":"Crushed     blacks "},{"description":"Example of crushed blacks"},{"description":"Example of crushed blacks and video noise"},{"description":"Example of heavily de-interlaced artfacts on footage during title sequence - As source"}]}

1 个答案:

答案 0 :(得分:0)

您的valueField不存在。 url不是您传递的对象的属性。将valueField更改为description。如果你拿到一个,请告诉我一个更具体的错误。同时删除optGroups。保持基本。