在laravel或Php中的搜索字段中显示Json

时间:2017-12-19 12:06:21

标签: php jquery laravel

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

我的控制器代码:

$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">

所有的事情都是正确的,但我需要如何在搜索框中显示任何想法的值?

2 个答案:

答案 0 :(得分:0)

如果可以更改响应格式

$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);  

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

答案 1 :(得分:0)

您可以通过几个简单的步骤来完成它。

使用相同的链接,控制器和功能进行路由,只需使用POST方法即可。 将输入字段包装在表单中,并在提交后将其转到同一页面。 在该controller @ function中创建变量,假设:

  

$ 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>

就是这样。

就这么简单。