在 laravel 或 Php 的搜索字段中显示 Json
Posted
技术标签:
【中文标题】在 laravel 或 Php 的搜索字段中显示 Json【英文标题】:Display Json in search field in laravel or Php 【发布时间】: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()->input('q')
查询变量q
我不认为在问题后面加上 12 个问号会达到预期的效果。
【参考方案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>
就是这样。
就这么简单。
【讨论】:
以上是关于在 laravel 或 Php 的搜索字段中显示 Json的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent:如果搜索文本字段为空,如何显示所有行