javascript - 选择不显示搜索结果

标签 javascript jquery ajax selectize.js

我正在尝试在 Selectize 中实现远程源。

我正在从 api 访问数据。格式如下:

concept_id,name
228,Pelecypoda
286,Pelecypoda

当我尝试在渲染中控制台项目时,它没有得到控制台。但是当我成功控制台时,数据就得到了控制台。

$('#search_text').selectize({
    theme: 'name',
    valueField: 'url',
    labelField: 'name',
    searchField: 'name',
    options: [],
    create: false,
    render: {
        option: function(item, escape) {
            console.log(item);
            return '<div>' +
                '<span class="title">' +
                    '<span class="by">' + escape(item.name) + '</span>' +
                '</span>' +
                '<span class="description">' + escape(item.concept_id) + '</span>' +
            '</div>';
        }
    },
    score: function(search) {
        var score = this.getScoreFunction(search);
        return function(item) {
            return score(item) * (1 + Math.min(item.watchers / 100, 1));
        };
    },
    load: function(query, callback) {
        if (!query.length) return callback();
        $.ajax({
            url: "http://192.241.245.176:4567/api1",
            dataType: 'text',
            type: "GET",
            data: {
                q: query,
                page_limit: 10
            },
            error: function() {
                callback();
            },
            success: function(res) {
                var result = {};
                result.name = d3.csv.parse(res);
                console.log(result);
                callback(result.name);
            }
        });
    }
});

谁能告诉我哪里出错了?

最佳答案

我相信有一个关键的值(value)标准被强制执行,但文档并没有非常彻底地涵盖它。那里顺便提到过一次,但没有进一步讨论。

您必须从服务器返回具有名称和值属性的结果:

名称=>名称数据

值=>值数据

Cliffnote:$items[$i]['name']['id']

Cliffnote:$items[$i]['value'][$key]

在我的例子中,构建我的结果看起来像这个 PHP 代码。

    $group['location'] = range(0,5);
                                        //'street',
                                        //'city',
                                        //'county',
                                        //'state',
                                        //'country',
                                        //'country2',

    $group['property']  = range(0,4);
                                        //'title',
                                        //'property_sub_type',
                                        //'subdivision_name',
                                        //'sub_cat',
                                        //'interior_features',

    $group['school']    = range(0,2);
                                        //'junior_high_School',
                                        //'middle_school',
                                        //'high_school',

    $group['mls']       = range(0,1);
                                        //'mls_area'
                                        //'mls_id#'
    $items = array();
    for ($i = 0; $i < count($res); $i++)
    {
        $items[$i]['name']['id'] = array_shift($res[$i]);
        $offset          = 0;
        foreach ($group as $key => $val)
        {
            $items[$i]['value'][$key] = array_filter(array_slice($res[$i], $offset, count($group[$key])));
            $offset += count($group[$key]);
        }
    }

产生这个数据结构

Array
(
    [0] => Array
        (
            [name] => Array
                (
                    [id] => 119
                )

            [value] => Array
                (
                    [location] => Array
                        (
                            [street] => 25700  Cliff Cir  
                            [city] => Spicewood
                            [county] => Travis
                            [state] => Texas
                        )

                    [property] => Array
                        (
                            [property_sub_type] => Single Lot
                            [subdivision_name] => Lakecliff On Lake Travis Sec 01
                        )

                    [school] => Array
                        (
                            [junior_high_School] => N/A
                            [middle_school] => Marble Falls
                            [high_school] => N/A
                        )

                    [mls] => Array
                        (
                            [mls_area] => 12
                            [mls_id#] => 4434048
                        )

                )

        )

关于javascript - 选择不显示搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28382025/

相关文章:

javascript - jQuery .change 未触发

javascript - 烦人的javascript时区调整问题

javascript - 将大字符串 Ajax 发送到 PHP

javascript - LocalStorage.getItem : Check if a key exists

jquery - $.mobile.changePage 不适用于 Phonegap?

JavaScript:使用动态键值解析 JSON

javascript - 为 DOMMouseScroll 事件添加延迟

javascript - 运行 Protractor 测试时出现问题

javascript - jQuery - AJAX 错误 : does not re-enable submit button

jquery - 使用 jquery 重新加载多网络摄像头(jpg) IMG