0

我正在尝试在我的应用程序中使用 typeahead 实现全文自动完成搜索。但我无法弄清楚它是如何工作的。

如果我手动输入数据源,我可以获得建议。但是如果我尝试使用 AJAX 调用,我将无法获得结果。我的另一个问题是,我会将搜索查询与控制器中的预输入查询分开吗?

任何帮助表示赞赏。

我的论坛视图:

{{ Form::open(array('url' => 'searchblogs','method' => 'post','id' => "search", 'class' => "input-append")) }}

<input class="typeahead"  size="16" type="text" value="Arama..."
       onfocus="if(this.value=='Search...') this.value=''" onblur="if(this.value=='') this.value='Arama...'"
       data-provide="typeahead" data-items="4"  data-page="url('typequery')" />

<input class="btn search-bt" type="submit" name="submit" value="" />
{{ Form::close() }}

我的jQuery:

<script>

        $('.typeahead').typeahead({
            source : function(typeahead, query){

                    $.ajax({
                        url      : 'typequery',
                        type     : 'POST',
                        data     : { query : query, column : 'title' },
                        dataType : 'json',
                        async    : true,
                        success  : function(data) {
                            return process(data.titles);
                        }
                    });
                }

        });

</script>

我的控制器是:

 public function postTypeahead()
    {
        // Get the query strings.
        //
        $column = Input::get('column');
        $query  = Input::get('query');

        // Check if the column name is valid and make sure we have a query.
        //
        if ( in_array( $column, $this->valid_filters ) and strlen($query) >= 1 ):
            // Initiate an empty array.
            //
            $data = array();

            // Search the database.
            //
            $results = Post::select( $column )->where( $column, 'LIKE', '%' . $query . '%')->get();

            // Loop through the results.
            //
            foreach ( $results as $result ):
                $data[] = $result->$column;
            endforeach;
        endif;

        // Return a response.
        //
        return Response::json($data);
    }
4

0 回答 0