2017-01-20 16 views
1

Здравствуйте, я могу выполнить стандартный поиск AJAX/PHP, но трудно преобразовать его в Laravel. Я использую ключ вместо нажатия кнопки. Я не уверен, что это правильный путь, который я собираюсь реализовать панель поиска ajax/laravel. Я ищу для вывода данных базы данных в div на странице просмотра, но вам нужна помощь в этом. Если кто-то думает, что я делаю это неправильно, пожалуйста, сообщите мне. Всегда готов изучить новый код.Реализовать панель поиска Laravel/AJAX

Контроллер:

<?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', '[email protected]'); 

Вид:

@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 
+0

Да! Я так близко. Теперь я получаю сообщение об ошибке этого из console.log - SyntaxError: Не удалось выполнить 'open' в 'XMLHttpRequest': Недопустимый URL – steven

+0

Я получаю успех, это означает, что все мои коды работают? – steven

+0

Теперь, чтобы вывести данные hmmm lol – steven

ответ

-1

В вашем изменении AJAX запроса:

'127.0.0.1:8000/search' 

к

'/search' 

Я предлагаю вам использовать jQuery Autocomplete

Очень прост в настройке.

Check out the API documentation.

+0

, который отказался от этого>: -/ – meda

+0

Возможно, он не захочет загрузить весь список пациентов на клиентском компьютере, чтобы это функционировало. –

+0

вам не обязательно, это может быть запрос ajax к конечной точке laravel. – meda

1

В зависимости от версии 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.

+0

Комментарии не предназначены для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/133685/discussion-on-answer-by-matt-altepeter-implement-laravel-ajax-search-bar). – meagar

0

Если вы имеете в виду результат обработки в браузере, проверьте его в AJAX, закодированном с помощью jQuery, переменная «response» - это сервер, возвращающий данные. Вам нужно просто заполнить возвращенные данные на свою страницу после завершения AJAX.

Например положить в

<div id="searchResult"></div> 

Вам нужно поместить ниже внутри AJAX после ответа, возвращаясь с JQuery, как:

$("#searchResult").html(response); 
+0

Итак, вы думаете, что я пойду в правильном направлении с вышеуказанным кодом, если я исправлю эту ошибку? – steven

+0

Да, это работает так. Если сервер ничего не возвращает. –

+0

return response() -> ($ пациентов); Правильно ли эта строка кода? если im использует базу данных mysql. – steven

 Смежные вопросы

  • Нет связанных вопросов^_^