Laravel 5.2 - 使用 jquery 自动完成下拉菜单
Posted
技术标签:
【中文标题】Laravel 5.2 - 使用 jquery 自动完成下拉菜单【英文标题】:Laravel 5.2 - Autocomplete dropdown with jquery 【发布时间】:2017-03-06 10:46:34 【问题描述】:我正在尝试编写一个自动完成建议输入,从我的数据库中提取一个列表。我有一个城市列表,但它不起作用。
我试过这样:
路线
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: 来源:'!!URL::route('getdata')!!',
【问题讨论】:
【参考方案1】:您可以使用route('getdata')
。
你也可以在js中使用php。我也在我的项目中使用它,我没有受到任何伤害。 还请检查名为“getdata”的路由是否确实提供了 json 格式的数据。
【讨论】:
【参考方案2】:!! !!
无效,您可以改用
或!! !!
。
尽量不要将 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);,
);
希望这会有所帮助。
【讨论】:
我解决了隐藏输入的问题,是的!我的输入显示需要 10 个结果,但现在 termn 不能正常工作,它总是显示我数据库中任何关键字的前 10 个项目。 干得好.. 现在请确保问题不是来自alter(ui);
而应该来自alert(ui);
。【参考方案3】:
我强烈推荐这个库来解决这个问题。
https://github.com/aaronlord/laroute
【讨论】:
【参考方案4】:您需要指定您的网址,例如
url('getdata')
无论如何,您的 !! !!
不适合刀片模板。你是说!! !!
吗?
【讨论】:
【参考方案5】:基本上你不能在 js 文件中执行 php 代码。 | 这是一个很好的答案:Call laravel route from js file
【讨论】:
以上是关于Laravel 5.2 - 使用 jquery 自动完成下拉菜单的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.2 无法将跨域 jQuery 方法识别为 AJAX
使用 Laravel 5.2 的 PHPUnit 未找到自定义异常
在 Laravel 5.2 中通过 RESTful 资源控制器使用 jQuery Ajax Post 方法将数据存储在数据库中