• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

ajax autocomplete

krackmoe

Neues Mitglied
Hi

Ich verwende von scriptaculous den Ajax.Autocompleter

Habe ihn so eingebunden:

HTML:
<script type="text/javascript" src="../js/prototype.js"></script>
<script type="text/javascript" src="../js/scriptaculous.js?load=effects,controls"></script>
<script type="text/javascript">
	window.addEvent('domready', function() {
	       window.resizeTo(800,700);
	       new Ajax.Autocompleter("idarzt","automenu","http://localhost:8080/med/servlet/doc.Network",{paramName: "value", minChars: 2}); 
	        });
</script>

HTML:
<td colspan="2">
	<input type="text" id="idarzt" value=""/>
	<div id="automenu" class="autocomplete" style="display:none; height: auto;"></div>														
</td>

Jedoch wird mir kein XMLHttpRequest abgeschickt.
Ich bekomm überhaupt keine Liste zurückgegeben! Gar nichts, Firebug zeigt nicht mal irgendeine Aktion und ich versteh nicht warum.
In die domReady Funktion oben geht er ganz normal rein, das hab ich über ein alert festgestellt.
Kann mir hier bitte jemand helfen?
 
Woher bekommst du denn das addEvent? Mootools?

Code:
<?php

// Ajax-Request?
if (isset($_GET['ajax'])) {
    echo '<ul>
        <li>x</li>
        <li>y</li>
        <li>z</li>
    </ul>';
    exit;
}

?><!DOCTYPE html>

<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.5/mootools.js"></script>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"></script>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/scriptaculous.js?load=effects,controls"></script>

        <script type="text/javascript">
        window.addEvent('domready', function() {
            new Ajax.Autocompleter("autocomplete", "autocomplete_choices",
                                   "?ajax", {});
        });
        </script>

        <title>New</title>
    </head>

    <body>

        <p>Type here, Ajax request should be performed:</p>

        <input type="text" id="autocomplete" name="autocomplete_parameter"/>
        <div id="autocomplete_choices" class="autocomplete"></div>

    </body>

</html>

Doku:

- http://wiki.github.com/madrobby/scriptaculous/ajax-autocompleter
 
Na ja, ich habe dir ein im Sinne der Dokumentation funktionstüchtiges Beispiel gemacht.

(Die Rückgabe des PHP-Teils könntest du natürlich auch in eine andere Datei auslagern oder ganz anders erzeugen. Dann müsstest du den Pfad, der aktuell ?ajax lautet, eben entsprechend anpassen. Ich habe das aufgenommen, um zu zeigen, wie eine Rückgabe an die Ajax-Funktion wohl laut Doku aussehen soll.)

Alles Weitere kann ich nicht beurteilen.
 
Mh.. ja.. die Doku kannte ich leider bereits schon!

Es schaut einfach so aus, als ob er gar nichts an mein Servlet schickt! Oder funktioniert das nur mit php? Das sollte doch egal sein oder?
 
Ja, die Backend-Technologie ist egal. Firebug zeigt normalerweise -- wie du ja im Ausgangspost auch geschrieben hast -- im "Net"-Panel an, wenn ein Request gesendet wird. Da sind zudem die Parameter und die Antwort einsehbar.

Hier mein Beispiel mit den beiden Parametern:

Code:
<?php

// Ajax-Request?
if (isset($_GET['ajax'])) {
    echo '<ul>
        <li>Übergebener Wert: ' . $_POST['value'] . '</li>
    </ul>';
    exit;
}

?><!DOCTYPE html>

<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.5/mootools.js"></script>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"></script>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/scriptaculous.js?load=effects,controls"></script>

        <script type="text/javascript">
        window.addEvent('domready', function() {
            new Ajax.Autocompleter("autocomplete", "autocomplete_choices",
                                   "?ajax", {paramName: "value", minChars: 2});
        });
        </script>

        <title>New</title>
    </head>

    <body>

        <p>Type here, Ajax request should be performed:</p>

        <input type="text" id="autocomplete" name="autocomplete_parameter"/>
        <div id="autocomplete_choices" class="autocomplete"></div>

    </body>

</html>

Du könntest sonst dein serverseitiges Script in eine Textdatei schreiben lassen oder ähnliches, um festzustellen, ob es abgerufen wird.
 
Zurück
Oben