Laravel 5.2 - 使用 jquery 自动完成下拉菜单

Laravel 5.2 - Autocomplete dropdown with jquery

我正在尝试编写一个自动完成建议输入,从我的数据库中提取一个列表。我有一个市政当局列表,但它不起作用。

我这样试过:

路线

Route::get('/crea-regalo', 'PostController@form');
Route::post('/crea-regalo', 'PostController@creaPost');
Route::get('/', 'HomeController@index');
Route::get('getdata', 'PostController@getData');

控制器

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);
}

查看 - 表单部分

<!-- 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')!!}}',

基本上你不能在js文件中执行php代码。 | 这是一个很好的答案:Call laravel route from js file

{{!! !!}} 无效您可以使用 {{ }}{!! !!} 代替。

尽量不要将 JS 与 PHP 代码混合,并在 blade 中添加隐藏输入:

<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);},
});

希望这对您有所帮助。

您需要指定您的url喜欢

{{ url('getdata') }}

无论如何,您的 {{!! !!}} 不适合 blade 模板。您是说 {!! !!} 吗?

您可以使用 {{route('getdata')}}.

也可以在js中使用php。我也在我的项目中使用它,我没有受到任何伤害。 另请检查名为 "getdata" 的路由是否确实在 json.

中提供数据

我强烈推荐这个库来解决这个问题。

https://github.com/aaronlord/laroute