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.
中提供数据
我强烈推荐这个库来解决这个问题。
我正在尝试编写一个自动完成建议输入,从我的数据库中提取一个列表。我有一个市政当局列表,但它不起作用。
我这样试过:
路线
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.
中提供数据我强烈推荐这个库来解决这个问题。