【问题标题】:Laravel 5.2 - Autocomplete dropdown with jqueryLaravel 5.2 - 使用 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')!!}}',

【问题讨论】:

    标签: javascript jquery laravel routes


    【解决方案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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-05-16
            相关资源
            最近更新 更多