Здравствуйте, я могу сделать стандартный поиск AJAX / PHP, но мне сложно конвертировать в Laravel. Я использую ключ вверх вместо нажатия кнопки. Я не уверен, что это правильный путь, которым я собираюсь реализовать панель поиска ajax / laravel. Я хочу вывести данные базы данных в div на странице просмотра, но мне нужна помощь в этом вопросе. Если кто-то думает, что я делаю это неправильно, пожалуйста, сообщите мне. Всегда готов выучить новый код.
контроллер:
<?php
namespace App\Http\Controllers;
use App\Patient;
use DB;
use Illuminate\Http\Request;
class PatientController extends Controller
{public function search(Request $request) {
// get the search term
$text = $request->input('text');
// search the members table
$patients = DB::table('patients')->where('firstname', 'Like', $text)->get();// return the results
return response()->json($patients);
}
}
Маршрут:
Route::get('search', 'PatientController@search');
Посмотреть:
@extends('Layout.master')@section('content')<!-- Ajax code -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script><script type="application/javascript">
$(document).ready(function(){
$('#txtSearch').on('keyup', function(){
var text = $('#txtSearch').val();
$.ajax({
type:"GET",
url: '127.0.0.1:8000/search',
data: {text: $('#txtSearch').val()},
success: function(data) {
console.log(data);
}});});
});
</script>
<div style="margin-top:70px;"></div>@include('partials._side')
<div class="container">
<form method="get" action="">
<div class="input-group stylish-input-group">
<input type="text" id="txtSearch" name="txtSearch" class="form-control" placeholder="Search..." >
<span class="input-group-addon">
<button type="submit">
<span class="glyphicon glyphicon-search"></span>
</button>
</span>
</div>
</form><div id="result"></div>
</div>
@endsection
В вашем AJAX
запрос на изменение:
'127.0.0.1:8000/search'
в
'/search'
Я предлагаю вам использовать JQuery Автозаполнение
Очень прост в настройке.
Ознакомьтесь с документацией по API.
В зависимости от вашей версии Laravel (новые версии используют это):
use Illuminate\Http\Request;
public function search(Request $request) {
$text = $request->input('text');
$patients = DB::table('patients')->where('firstname', 'Like', "$text")->get();
return response()->json($patients);
}
И тогда в JavaScript:
$(document).ready(function(){
$('#txtSearch').on('keyup', function(){
var text = $('#txtSearch').val();
$.ajax({
type:"GET",
url: 'search',
data: {text: $('#txtSearch').val()},
success: function(response) {
response = JSON.parse(response);
for (var patient of response) {
console.log(patient);
}
}});});
});
https://laravel.com/docs/5.1/requests#retrieving-input.
Если вы имеете в виду обработать результат в браузере, проверьте внутри своего AJAX, закодированного с помощью jQuery, переменная «response» — это сервер, возвращающий данные.
Вам просто нужно заполнить возвращенные данные на своей странице после завершения AJAX.
Например положить в
<div id="searchResult"></div>
Вам нужно поместить ниже в ваш ajax после ответа, возвращающегося с jquery, как:
$("#searchResult").html(response);