Ich verwende twitter typeahead und php als Backend zum Abrufen von Daten von mysql. Aber ich kann keine Vorschläge sehen, wenn ich mit der Eingabe in das Textfeld beginne. Ich denke, da die PHP-Ausgabe JSON-codiert sein muss.
Wie kann ich die Ausgabe codieren?
Ausgabe:
%Vor%html:
%Vor%getvalues.php
%Vor% Um die Ausgabe als JSON zu kodieren, müssen Sie zuerst ein Array mit den Ergebnissen erstellen und json_encode()
verwenden, wie folgt:
Aber standardmäßig Ergebnisse sind html vor in typeahead gezeigt entkam, so dass Sie das Ergebnis erhalten wan't Sie erwarten, aber den HTML-Codes in der Vorschlagsliste. So entwerfen Einträge mit eigenen HTML-Templates sollten Sie wie beschrieben hier verwenden.
Ihre $result
-Array-Einträge könnten wie folgt aussehen, um die Felder in Ihrem html anzugeben:
... und dann wie beschrieben in die Vorlage eingefügt werden.
Eine andere Sache: Die prefetch
Option, die Sie verwenden, nicht einer von typeahead, sondern von Bluthund, die in der Regel zusammen mit typeahead verwendet wird, sondern muss zunächst initialisiert werden und gegeben als source
auf typeahead . Hier finden Sie aktuelle hier , es ist ganz einfach.
Bloodhound auf es ist Teil feste Datensätze als Arrays nehmen können (über die local
Option), feste Datensätze über URL (über die prefetch
Option) oder können Anfragen an URLs tun, das ist, was Sie apperently tun wollen, wenn Sie den Wert von $_GET["q"]
in Ihrem PHP-Code abrufen. In diesem Fall müssten Sie $q
in Ihrem SQL verwenden und den Bluthund mit der Option remote
wie folgt initialisieren:
Sie brauchen nicht zu tun, da es wieder von typeahead.js auf der Client-Seite gefiltert wird ... es ist nur eine Frage der Leistung und die Menge der Ergebnisse. Wenn es nur ein paar gibt, benutze die Option Bluthunde prefetch
.
Als Erstes sollten Sie mysqli
anstelle von mysql
verwenden und auch nicht Ihre $_GET
in Ihrer Abfrage verwenden. Nicht sicher, ob es benötigt wird.
Für Ihren Code ist nicht sicher, wie der Prefetch verwendet wird. Ich selbst benutze Bluthund, der auch auf dem offiziellen twitter typeahead github verwendet wurde. Es sieht so aus:
%Vor%Dies wird die Daten von Ihrem Server über Ajax-Anruf erhalten. Sie geben ein JSON ohne das gesamte HTML-Markup von Ihrem Ajax-Aufruf an Ihre Typehead zurück. Das HTML Markup kann in typeahead
gemacht werden %Vor%Und Ihre PHP-Datei sollte so aussehen:
%Vor%Tags und Links jquery php mysql typeahead.js