2016-10-24 3 views
2

Я пытаюсь закодировать автозаполнение предлагать ввод, извлекающий список из моей базы данных. У меня есть список муниципалитетов, но он не работает.Laravel 5.2 - выпадающее меню Autocomplete с jquery

я пытался так:

МАРШРУТЫ

Route::get('/crea-regalo', '[email protected]'); 
Route::post('/crea-regalo', '[email protected]'); 
Route::get('/', '[email protected]'); 
Route::get('getdata', '[email protected]'); 

CONTROLLER

public function getData(Request $request) { 

    $termn = $request->termn; 

    // controllo 
    $data = Municipality::where('name', 'LIKE', '%'.$termn.'%') 
     ->take(10) 
     ->get(); 
    $results = array(); 

    foreach ($data as $key => $v) { 
     $results[]=['id' => $v->id, 'value' => $v->name]; 
    } 

    return response()->json($results); 
} 

VIEW - ФОРМА РАЗДЕЛ

<!-- Select Basic --> 
<div class="form-group"> 
    <label class="col-md-3 control-label" for="seller-Location">Municipality</label> 
     <div class="col-md-8"> 
      <input type="text" name="municipality" placeholder="comune" id="searchname"> 
     </div> 
</div> 

JS

$('#searchname').autocomplete({ 
    minLength: 1, 
    autoFocus: true, 
    source: '{{!!URL::route('getdata')!!}}', 
    select: function(e, ui){ alter(ui);}, 
}); 

Моей консоль показывает мне ошибку вроде этого:

Uncaught SyntaxError: Unexpected identifier line 10 of my js file: source: '{{!!URL::route('getdata')!!}}',

ответ

0

{{!! !!}} не является действительным, вы можете использовать {{ }} или {!! !!} вместо этого.

Постарайтесь не смешивать JS с PHP кодой, и добавить скрытый вход в вашем клинке:

<input type="hidden" id="route-url" value="{{ route('getdata') }}"> 
//Or 
<input type="hidden" id="route-url" value="{{ URL::route('getdata') }}"> 

JS:

$('#searchname').autocomplete({ 
    minLength: 1, 
    autoFocus: true, 
    source: $('#route-url').val(), 
    select: function(e, ui){ alter(ui);}, 
}); 

Надеется, что это помогает.

+0

Я исправляю проблему со скрытым вводом да! мое входное шоу принимает 10 результат, как я хочу, но теперь termn doen't хорошо работает, он всегда показывает первые 10 элементов моей базы данных для любого ключевого слова. –

+0

Хорошая работа .. теперь, пожалуйста, убедитесь, что проблема не исходит от 'alter (ui);' that should 'alert (ui);'. –

0

Вы должны указать свой адрес, как

{{ url('getdata') }} 

В любом случае ваши {{!! !!}} неправильно для лезвия шаблонов. Возможно, вы имели в виду {!! !!}?

1

Вы можете использовать {{route('getdata')}}.

Также вы можете использовать php в js. Я тоже использую его в своих проектах, и у меня не было никакого вреда от него. Также проверьте, действительно ли маршрут с именем getdata предоставляет данные в json.

Смежные вопросы