2016-05-17 21 views
0

So versuche ich eine einfache Autovervollständigung mit jquery Ui in meiner Laravel 5.2 App zu implementieren. Aber ich erhalte den folgenden Fehler:404 Nicht in Autovervollständigung in Laravel gefunden

enter image description here

Hier ist das Eingabefeld:

<input id="participants" name="participants" type="text"> 

Mein Javascript

$("#participants").autocomplete({ 
    source: "/user/get-users-json", 
    minLength: 1 
}); 

Meine Route:

Route::get('user/get-users-json', '[email protected]'); 

My g etUsersJson Methode:

public function getUsersJson() { 

$term = strtolower(Input::get('participants')); 

$data = array('John', 'James', 'Henry', 'Graham', 'Mitthew', 'Rick', 'Tom'); 

$return_array = array(); 

foreach ($data as $value) { 
    if (strpos(strtolower($value), $term) !== false) { 
     $return_array[] = array('value' => $value); 
    } 
} 
return response()->json($return_array); 
} 
} 

Wenn ich das Formular/user/get-Benutzer-json einreichen, es funktioniert perfekt und druckt die JSON Ich muss auf der Webseite, aber die automatische Vervollständigung selbst nicht funktioniert, und ich habe keine Ahnung, Warum.

Irgendwelche Vorschläge? Danke im Voraus.

Antwort

1

Das Problem ist, dass die GET-Parameter, die von jQuery UI gesendet wird, ist "Ausdruck", nicht "Teilnehmer". Also änderte ich von getUsersJson Methode

$term = strtolower(Input::get('participants')); 

zu

$term = strtolower(Input::get('term')); 

Und es hat funktioniert!

+0

Ja, JQuery autocomplete fügt eine Abfragezeichenfolge mit einem 'term'-Feld zur Quell-URL hinzu, nicht den Namen des' input'-Tags. Danke für die Lösung – absolux

1

Da Sie versuchen, die URL user/get-users-json zu erreichen, denkt der Browser, dass Sie dies im aktuellen Verzeichnis tun möchten. Sie können in dem Fehler sehen, dass es versucht, /event/user/get-users-json und nicht die gewünschte zu erreichen.

Ändern Sie es zu source: "/user/get-users-json", mit einem Schrägstrich am Anfang, um dem Browser zu sagen, die Route stattdessen an die Basis anzuhängen. Das sollte ausreichen, damit es funktioniert.

+0

Jetzt bekomme ich 500 (Interner Serverfehler). Wenn das Formular jedoch normal übermittelt wird, erhalte ich den JSON, den ich möchte. –

+0

Dann wette ich, dass Sie Ihre ajax csrf-Tokens nicht in der richtigen Reihenfolge haben, damit der Server die Anfrage nicht validieren kann, wenn Sie sie mit jquery senden. –

1

Ich glaube, Sie Tippfehler in Ihrem JavaScript-Funktion

$("#participants").autocomplete({ 
    source: "/user/get-users-json", // use absolute path starting with slash 
    minLength: 1 
}); 

haben Hoffe, es funktioniert