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 自定义包路径

Laravel 5.2 分页自定义

CORS问题无法解析jquery,laravel 5.2

Laravel 5.2 无法将跨域 jQuery 方法识别为 AJAX

使用 Laravel 5.2 的 PHPUnit 未找到自定义异常

在 Laravel 5.2 中通过 RESTful 资源控制器使用 jQuery Ajax Post 方法将数据存储在数据库中