Bootstrap Typeahead w Laravel Uncaught TypeError: невозможно прочитать свойство «длина» неопределенного

Я пытаюсь использовать автозаполнение в поле тегов моей формы, используя Bootstrap Typeahead. Когда я сейчас набираю письмо, у меня появляется сообщение об ошибке в инструментах разработчика Chrome:

Uncaught TypeError: Cannot read property 'length' of undefined 

Коротко моя форма:

    <form class="form-horizontal" method="post" action="" autocomplete="off">
        <!-- CSRF Token -->
     .....
     <!-- Tags -->
      <div class="control-group {{ $errors->has('tag_id') ? 'error' : '' }}">
        <label class="control-label" for="tags">Tags</label>
           <div class="controls">
             <input type="text" class="typeahead" data-provide="typeahead"   autocomplete="off" >
             {{ $errors->first('tag_id', '<span class="help-inline">:message</span>') }}
           </div>
      </div>
      .....
    </form>

Я использую префикс администратора в своих блогах:

Route::group(array('prefix' => 'admin'), function()
{
  Route::get('/', array('as' => 'blogs', 'uses' => 'Controllers\Admin\BlogsController@getIndex'));
        Route::get('create', array('as' => 'create/blog', 'uses' => 'Controllers\Admin\BlogsController@getCreate'));
        Route::post('create', 'Controllers\Admin\BlogsController@postCreate');
        Route::post('tags', 'Controllers\Admin\BlogsController@postTags');
}

мой контроллер:

public function postTags()
{
      $query = Input::get('query');

      $results = Tag::select( 'name' )->where( 'name', 'LIKE', '%' . $query . '%')->get();

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

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

}

И я попытался активировать typehead

<script type="text/javascript">
     $('.typeahead').typeahead({
                  source : function(typeahead, query){
                $.ajax({
                    url      : 'tags',
                    type     : 'POST',
                    data     : { query : query, column : 'name' },
                    dataType : 'json',
                    async    : true,
                    success  : function(data) {
                        return process(data.titles);
                    }
                });
            }
    });
</script>

Как я могу исправить эту ошибку?

Спасибо.


person ytsejam    schedule 23.11.2013    source источник
comment
Какую версию TwB вы используете?   -  person Jenil Gogari    schedule 23.11.2013
comment
Я использую бутстрап 2.3.2   -  person ytsejam    schedule 23.11.2013


Ответы (1)


Функция typeahead должна возвращать запрос ajax. В твоем случае:

<script type="text/javascript">
 $('.typeahead').typeahead({
              source : function(typeahead, query){
            return $.ajax({
                url      : 'tags',
                type     : 'POST',
                data     : { query : query, column : 'name' },
                dataType : 'json',
                async    : true,
                success  : function(data) {
                    return process(data.titles);
                }
            });
        }
});

person María Arias de Reyna Domínguez    schedule 10.01.2014
comment
process здесь не определено. - person hamidfzm; 04.08.2015
comment
Отличие от исходного кода заключается в операторе возврата. Процесс, конечно, не определен. Это зависит от варианта использования. - person María Arias de Reyna Domínguez; 05.08.2015