Patrick: Abfrage wie bei wikipedia

Hi Forum,

die deutsche Wikipedia-Seite hat diese "onthefly" Abfrage drin, also direkt bei der Eingabe werden Vorschläge angezeigt.
Hat jemand eine Idee bzw. Script, wie ich so etwas realisieren kann?

Vielen Dank
Patrick

  1. Hallo Patrick,

    Hat jemand eine Idee bzw. Script, wie ich so etwas realisieren kann?

    Die verwendete Technologie nennt sich AJAX. Ohne fundierte JavaScript-Kentnisse wirst du sowas nicht selbst realisiert bekommen.

    Eine Alternative wäre ein AJAX-such-Script. Da ich nichts mit AJAX mache, kann die evtl. ein anderer Forumsteilnehmer oder Google weiterhelfen.

    Grüße
    Ole
    (8-)>

    --
    Stickstoff eignet sich nicht für Handarbeiten.
    1. Moin!

      Die verwendete Technologie nennt sich AJAX. Ohne fundierte JavaScript-Kentnisse wirst du sowas nicht selbst realisiert bekommen.

      Ich empfehle jQuery. Damit kriegt man auch ohne detaillierte AJAX-Kenntnisse extrem viel hin.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
  2. Hi

    die deutsche Wikipedia-Seite hat diese "onthefly" Abfrage drin, also direkt bei der Eingabe werden Vorschläge angezeigt.

    Dabei handelt es sich um eine LiveSuche. Dies kannst du mit AJAX realisieren:

    http://ajaxpatterns.org/Live_Search
    http://wiki.flux-cms.org/display/BLOG/LiveSearch

  3. Hi,

    danke, ich schau es mir mal an.

    Bye
    Patrick

  4. Hallo,

    die deutsche Wikipedia-Seite hat diese "onthefly" Abfrage drin, also direkt bei der Eingabe werden Vorschläge angezeigt. Hat jemand eine Idee bzw. Script, wie ich so etwas realisieren kann?

    Mit Ajax. Diese Vorschläge kommen ja irgendwoher. Wenn man nur zehn Vorschläge hat, kann man diese dem Javascript ja gleich weiter geben. Bei ganz, ganz vielen möglichen Vorschlägen wie bei der Wikipedia oder gar Google wird das Suchen nach möglichen Vorschlägen vom Server übernommen, damit nicht so viele, nämlich alle Daten über die Leitung geschoben werden müssen. Dazu muss die live im Browser angezeigte Seite noch mal mit dem Server kommunizieren können. Dazu braucht man das XMLHttpRequest; das Prinzip wird mit dem Buzzword Ajax zusammengefasst.

    Der Ablauf sieht ungefähr so aus:

    1. Der Nutzer tippt etwas wie „X“ ins Input-Feld
    2. Der Event-Handler onkeyup merkt das und ruft eine Funktion A auf.
    3. Diese Funktion B nimmt ein XMLHttpRequest-Objekt und schickt damit über HTTP einen Request an - sagen wir mal - http://example.com/search.php?query=X.
    4. Das serverseitige Skript search.php erledigt die serverseitige Suche und schickt die Resultate zurück an den Browser. Idealerweise in einem Format, das bequem von JS verarbeitet werden kann, wie z.B. JSON oder gleich in einem HTML-Fragment
    5. Vereinfacht: Unter onreadystatechange wird am XMLHttpRequest-Objekt eine Funktion hinterlegt, die immer aufgerufen wird, wenn sich der aktuelle Status des HTTP Requests verändert. Daran merkt man auch, wenn der Request erfolgreich war - dort werden dann die Daten vom Attribut responseText entgegen genommen, in JS- oder HTML-Objekte verwandelt und an Funktion B übergeben.
    6. Funktion B ist nun dazu zuständig, die Ergebnisdaten in HTML zu wandeln und ins Dokument einzufügen; idealerweise so, dass sie wie in Dropdown aussehen. Das ist dann aber Sache von CSS.

    Übrigens: Der Nutzer tippt ja weiter. Es ist etwas doof, für jeden neuen Buchstaben einen neuen Request zu erstellen. Idealerweise nutzt man ein- und dasselbe XHR-Objekt weiter und cancelt vorherige Requests mit abort(). Und man muss auch nicht gleich beim ersten Buchstaben anfangen zu suchen, ich würde sagen drei Buchstaben sind ein gutes Maß.

    The XMLHttpRequest Object ist eine nette Übersicht über das zentrale Objekt.
    Ajax Patterns: Live Search diskutiert verschiedene Details rund um dieses Schema.

    Tim