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

Zurückgeben von vielen Daten (Arrays) mit AJAX-Request

Gokar

Neues Mitglied
Hallo Community,

habe wieder mal eine Frage. Zu AJAX. Und zwar möchte ich gerne per AJAX-Request (mit ein, zwei übergebenen Parametern) eine Datenbankabfrage absetzen, welche mehrere Daten zurückgeben wird, darunter auch Arrays.

Momentan benutze ich AJAX in etwa so wie hier (Das XMLHttpRequest - Objekt - Javascript - Ajax - Tutorials, Tipps und Tricks für Webmaster auf Webmasterpro.de), also sehr simpel:

HTML:
<html>
<head>
<title>Nur ein Test</title>
<script type="text/javascript">
     // Objekt erzeugen
     // hier ohne Fallunterscheidung, da für das Beispiel einfacher
     var xmlHttpObject = new XMLHttpRequest();
     // Funktion, die bei Statusänderungen reagiert
     function handleStateChange()
     {         
         // Derzeitigen Status zurückgeben         
         alert("xmlHttpObject.readyState = " + xmlHttpObject.readyState + (xmlHttpObject.readyState >= 3 ? " HTTP-Status = " + xmlHttpObject.status : ''));     
     }          
     // Wenn Dokument geladen ausführen     
    window.onload = function() 
    {
         // Anfrage vorbereiten
         xmlHttpObject.open('GET', '/');
         // Handler hinterlegen
         xmlHttpObject.onreadystatechange = handleStateChange;
         // Anfrage abschicken
         xmlHttpObject.send(null);
     }
 </script>
 </head>
 <body>
    <p>Es sollte sich etwas tun</p>
</body>
</html>

Ich nehme also den xmlHttpObject.responseText in Empfang, der zuvor in der php-Datei per echo zusammengestellt wurde. Ein Array wäre ja auch problemlos in einen String zu packen und könnte mit split() in Javascript wieder als Array geschrieben werden, aber ich bekomme auf jeden Fall mehr, als ein Array zurück und verliere dann auf diesem Wege total den Überblick.

Zur Frage: Ganz allgemein, wie arbeitet ihr mit AJAX wenn ihr einen Fall habt, in dem ihr viele Daten zurückgeben möchtet? Könnt ihr mir zu etwas raten hinsichtlich dieser Angelegenheit?

Ich habe mich im Vorfeld auch schon mal schlau gemacht, wofür JSON gebraucht wird und hier (http://openbook.galileocomputing.de/javascript_ajax/18_ajax_002.htm#7f0f10cc5ed095e967ec49c8d3150134) beispielsweise auch wieder gerade von der Verwendung gelesen.
Trotzdem stößt man doch bei mehreren Arrays dann doch wieder an seine Grenzen oder?

________________

Folgenden Bereich müsst ihr nicht lesen, ich möchte Euch kurz etwas in die Hand geben, damit ihr Euch vorstellen könnt, wie das Umfeld aussieht. Stellt Euch vor, wir haben es mit einer Musikbibliothek zu tun. Titel, Alben und Interpreten können dieser hinzugefügt und angeschaut werden. Es soll aber auch die Möglichkeit bestehen diese zu bearbeiten oder zu löschen. Das möchte ich bewerkstelligen:

689372_5kqhxza5xu.jpg

Im grauen Umfeld haben wir einen kleinen Auswahlbereich nach dem 'sortiert' werden kann. Gefiltert werden kann nach Interpreten, Alben und Titeln und zwar jeweils über die Dropdown-Box oder Eingabe eines Begriffes im Suchfeld, welche durch den zugehörigen Button abgeschicht werden kann.
Der dunkelblaue und hellblaue Abschnitt sollen später Informationen anzeigen.

Gewünschte Funktionsweise an einem Beispiel (Interpret):

- Der Button neben dem Such-feld des Interpreten wird betätigt (oder in der Dropdownbox ein Interpret ausgewählt (onchange-Event))
- Darauf wird per AJAX-Request eine Abfrage zum Interpreten gemacht, die dessen Namen/ ID weitergibt
- Die PHP-Datei selektiert dessen Alben und Titel. Ferner auch Informationen zum Interpret selber
- Mit den Informationen des Requests sollen nun die Dropdown-Boxen 'Album' und 'Titel' befüllt werden, sowie im blauen Div-Bereich die Interpreteninformationen angezeigt werden und (falls möglich) die Quelle für den Autocomplete der Alben und Titel Suchfelder.

________________


Ich bedanke mich im Voraus für Eure Zeit und Antworten!


Beste Grüße,
Gokar
 
Zuletzt bearbeitet:
wieso benutzt du JSON denn nicht? Erstelle einfach am einfach deines Scriptes sowas:
$ans = array();
und da fügst du deine inhalte rein:
$ans['a'] = b;
und am ende gibst du das aus:
print json_encode($ans);
 
Zurück
Oben