【问题标题】:Display Json in search field in laravel or Php在 laravel 或 Php 的搜索字段中显示 Json
【发布时间】:2018-06-01 20:52:59
【问题描述】:

我需要在搜索栏上显示搜索到的值。

我的控制器代码:

$q = Input::get('q');
  $query = Jobs::select('job_title')->Where('job_title', 'LIKE', '%'.$q.'%')->get();
  return response()->json($query);

我的 jquery axios 代码:

 $(document).ready(function(){
  $("#jobsearch").keyup(function(){
     url = "{{route('searchexistingjob')}}";
     var word = $("#jobsearch").val();
     const data = {
       'q' : word
     }
     axios.post(url,data).then(response =>{
        for(i=0; i<response.data.length; i++){
            // $('#jobsearch').val(response.data[i].value);           
     });
  });
});

HTML 代码

<input type="text" id="txtjobsearch" name="txtjobsearch" class="form-control" placeholder="Job title, designation, description..." autocomplete="off" data-id="1">

所有的东西都是正确的,但我需要如何在搜索框中显示该值有什么想法吗?

【问题讨论】:

  • expertphp.in/article/… 试试这个链接
  • 但我需要通过 axios 进行操作
  • 你在使用 Vue.js?
  • 在您的视图中尝试{{ request()-&gt;input('q') }} 查询变量q
  • 我不认为在问题后面加上 12 个问号会达到预期的效果。

标签: php jquery laravel


【解决方案1】:

如果可以的话,你可以改变响应格式

$q = Input::get('q');
$query = Jobs::select('job_title')->Where('job_title', 'LIKE', '%'.$q.'%')->get();
return response()->json([
    search_terms => $q,
    results => $query,
]);

或者当您使用 ajax 时,您已经有了搜索词:

所以而不是:

$('#jobsearch').val(response.data[i].value);  

您将使用:

$('#jobsearch').val(word);  

或者只是删除该行并留下已经输入的内容。

【讨论】:

    【解决方案2】:

    您只需几个简单的步骤即可完成。

    创建一个具有相同链接、控制器和功能的路由,只需使用 POST 方法。 将输入字段包裹在表单中,并在提交时将其转到同一页面。 在该控制器@函数中创建变量,假设:

    $result = "";

    然后将该变量传递给视图。 并在视图中,将该输入的值设置为 $result;

    如果它还没有被查询到,那么那个输入将被清除($result = '';),否则,它会显示那个查询的结果。

    // routes/web.php 
    Route::get('/home', 'SearchBarController@index');
    Route::post('/home', 'SearchBarController@index');
    
    // app/Http/Controllers/SearchBarController.php
    public function index()
    {
        $result = '';
        if(request()->isMethod('post'))
        {
            $q = Input::get('textjobsearch');
            $query = Jobs::select('job_title')->where('job_title', 'LIKE', '%'.$q.'%')->get();
            $result = json_encode($query);
        }
    
        return view('searchbar.index', compact('result'));
    }
    
    // resources/views/searchbar/index.blade.php
    
    <form method='post'>
        <input type="text" id="txtjobsearch" name="txtjobsearch" value="{{ $result }}" class="form-control" placeholder="Job title, designation, description..." autocomplete="off" data-id="1">
    <input type='submit' />
    </form>
    

    就是这样。

    就这么简单。

    【讨论】:

      猜你喜欢
      • 2021-10-15
      • 2021-01-03
      • 2018-11-12
      • 2014-11-07
      • 2014-03-12
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多