Ich versuche ein Suchformular zu erstellen, das nach einem Datensatz in einer Datenbanktabelle sucht, während der Benutzer in das Suchfeld eintippt.
Laravel Ajax Suche
-Controller
public function search() {
// get the search term
$term = Input::get('term');
// search the members table
$members = DB::table('members')
->where(concat("members.member_first_name,' ',members.member_last_name"), 'LIKE', "$term")
->orwhere(concat("members.member_last_name,' ',members.member_first_name"), 'LIKE', "$term")
->orwhere(concat("members.member_name_affix,' ',members.member_last_name,' ',members.member_first_name"), 'LIKE', "$term")
->orwhere(concat("members.member_first_name,' ',members.member_name_affix,' ',members.member_last_name"), 'LIKE', "$term")
->orwhere('members.member_first_name', 'LIKE', "$term")
->orWhere('members.member_last_name', 'LIKE', "$term")
->orWhere('members.member_business_address', 'LIKE', "$term")
->get();
// return the results in JSON format
return response()->json($members);
}
Strecke
Route::get('search', '[email protected]');
Ansicht
<!-- THE SEARCH FORM -->
<form method="GET" id="search-form">
<input type="search" id="term" name="term" onkeyup="ajaxSearch()" placeholder="Search the members table..." autofocus>
</form>
<!-- THE AJAX FUNCTION -->
<script>
function ajaxSearch() {
$.ajax({
url: 'search',
type: 'GET',
data: {term: $('#term').val()},
dataType: 'JSON',
success: function(response) {
console.log(data);
}
});
}
</script>
<!-- THE RESULTS TABLE -->
<div class="clear"></div>
<div id="resultTableWrapper">
<table id="resultTable">
<thead>
<tr>
<th>Name</th>
<th>Address</th>
<th>Business Address</th>
<th>Join Date</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div><!-- /#resultTableWrapper -->
<div class="clear"></div>
<p id="search-info">Please type your search phrase in the field above.</p>
<!-- USE THE JSON RESPONSE TO FILL THE RESULTS TABLE -->
@if (isset($_GET['term']))
@foreach ($members as $member)
<tr>
<td>
<strong>
{!! $member->member_name_affix.' '.$member->member_last_name.' '.$member->member_first_name.' '.$member->member_title !!}
</strong><br><br>
<div class="unhighlight">
{!! $member->member_business_position !!}<br><br>
{!! $member->member_business_name !!}
</div>
</td>
<td class='unhighlight'>
@if ($member->member_private_address)
<span>
{!! $member->member_private_address !!} <br>
{!! $member->member_private_zip_code. ' ' .$member->member_private_location !!}
</span><br>
<div class='clear'></div>
@endif
</td>
... and so on ...
</tr>
@endforeach
@endif
Die Fehlermeldung, die ich immer bin, wenn ich den Brief der Eingabe beginnen ‚a‘ in das Suchfeld:
GET http://localhost.local/search?term=a 500 (Internal Server Error)
Ich bin sehr neu Laravel und ich würde für jeden sehr dankbar Art von Hilfe!
UPDATE
Dank Amieiro ich, dass der Fehler bei der Eingabe zu sein scheint, um herauszufinden, verwaltet :: get() Methode:

Interner Serverfehler bedeutet normalerweise, dass Sie etwas in Ihrem Code vermasselt haben. Überprüfen Sie Ihre Laravel Storage/Logs-Ordner oder Apache-Logs für Hinweise, was es ist. –
Danke für die Hilfe. Ich finde jedoch nur .gitignore-Dateien im Ordner logs. – Schwesi
Sie sollten Körper von Ajax-Antwort überprüfen. Es hätte mehr Informationen, was falsch ist. Sie können es in Entwickler-Tools überprüfen. Sie können sich das [Beispiel] (http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art034) für Chrome ansehen. –