首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bootstrap 2.2.1 Typeahead

Bootstrap 2.2.1 Typeahead
EN

Stack Overflow用户
提问于 2012-11-06 21:48:21
回答 2查看 4.7K关注 0票数 1

PHP,返回JSON编码的数组

代码语言:javascript
复制
$this->load->model('car_model', 'cars');
$result = $this->cars->searchBrand($this->input->post('query'));
$this->output->set_status_header(200);
$this->output->set_header('Content-type: application/json');
$output = array();
foreach($result as $r)
    $output['options'][$r->brandID] = $r->brandName;
print json_encode($output);

输出:{"options":{"9":"Audi","10":"Austin","11":"Austin Healey"}}

JS更新:

代码语言:javascript
复制
$(".searchcarBrands").typeahead({
    source: function(query, typeahead) {
        $.ajax({
            url: site_url + '/cars/search_brand/'+query,
            success: function(data) {
                typeahead.process(data);
            },
            dataType: "json"
        });
    },
    onselect: function(item) {
        $("#someID").val(item.id);
    }
});

更新:未捕获的函数: Object TypeError(){a.apply a.apply(c,e.concat(k.call(k.call)}没有方法'process‘

如果我只输入'A‘,则typeahead只显示每个结果的第一个字母(一串A字母)。如果我输入第二个字母,我什么也看不到。

我尝试过对数据使用JSON.parse或使用data.options,但没有成功。

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2012-11-06 21:59:14

下面是我用bootstrap的typeahead来简化远程数据源的方法:

代码语言:javascript
复制
$("#search").typeahead({

    source: function(typeahead, query) {

        $.ajax({

            url: "<?php echo base_url();?>customers/search/"+query,
            success: function(data) {

                typeahead.process(data);
            },
            dataType: "json"
        });
    },
    onselect: function(item) {

        $("#someID").val(item.id);
    }
});

然后,您只需要确保JSON编码的数组包含标签的value索引和id字段,以便在之后设置隐藏的id,如下所示:

代码语言:javascript
复制
$this->load->model('car_model', 'cars');
$brands = $this->cars->searchBrand($this->uri->segment(4));
$output = array();
foreach($brands->result() as $r) {

    $item['value'] = $r->brandName;
    $item['id']    = $r->brandID;
    $output[] = $item;
}
echo json_encode($output);
exit;
票数 2
EN

Stack Overflow用户

发布于 2012-11-06 21:53:03

$.post是异步的,所以你不能在其中返回。这不会返回任何内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13252421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档