Suggest mit responseXML
Ich habe nun ein wenig an diversen Ajax-Beispielen gearbeitet. Und wollte nun dass die Daten die ich von meiner Datenbank abfrage in XML Form im Browser dargstellt wird. Nur funktionierts nicht so wie ich mir das vorgestellt habe. Lösungsvorschläge?
Ich habe nun ein wenig an diversen Ajax-Beispielen gearbeitet. Und wollte nun dass die Daten die ich von meiner Datenbank abfrage in XML Form im Browser dargstellt wird. Nur funktionierts nicht so wie ich mir das vorgestellt habe. Lösungsvorschläge?
Im meiner html Datei habe ich:
Mein .php:
und hier nun mein .js (wo der Hund drin ist, da ich nicht weiß wie ich die getElementByID adressieren muss...) ich habe alle für mich verwirrenden Abfragen mit XYX markiert!
Wär toll wenn jemand bei der Adressierung in der javaScript Datei helfen könnte... Wie gesagt in meinem ersten Beispiel hats so eingentlich ganz gut funktioniert, nur hier nicht mehr, wenn ich die Daten als XML aufbauen will...
Ich habe nun ein wenig an diversen Ajax-Beispielen gearbeitet. Und wollte nun dass die Daten die ich von meiner Datenbank abfrage in XML Form im Browser dargstellt wird. Nur funktionierts nicht so wie ich mir das vorgestellt habe. Lösungsvorschläge?
Im meiner html Datei habe ich:
<input id="eingabe" type="text" size="30"/>
<select id="auswahl" size="4" onclick="uebernehmeAuswahl()">
<option></option>
</select>
Mein .php:
<?php
header("Content-Type: text/xml");
$text = '<?xml version="1.0" ?>
<adressen>';
$query = "SELECT zuname, vorname, email FROM adresse WHERE email LIKE '" .
$_GET['what'] . "%'";
// echo $query . "<br/>";
$db = mysql_connect("localhost","root","");
// echo $db . "<br/>";
if (!$db) {
die("Fehler beim Verbinden zur Datenbank!");
}
$db_selected = mysql_select_db("ajax1", $db);
if (!$db_selected) {
die("Fehler bei der Auswahl der Datenbank");
}
$result = mysql_query($query);
if (NULL == $result) {
die("Fehler bei der Abfrage der Datenbank");
}
while ($ausgabe = mysql_fetch_array($result, MYSQL_ASSOC)) {
$text .= "<zuname>" . $ausgabe['zuname'] ."</zuname>";
$text .= "<vorname>" . $ausgabe['vorname'] ."</vorname>";
$text .= "<email>" . $ausgabe['email'] ."</email>";
}
mysql_close($db);
$text .= '</adressen>';
// Hier wird die Antwort schon als HTML gesendet:
echo $text;
?>
und hier nun mein .js (wo der Hund drin ist, da ich nicht weiß wie ich die getElementByID adressieren muss...) ich habe alle für mich verwirrenden Abfragen mit XYX markiert!
var resObjekt;
function sndReq()
{
resObjekt.open("get", "suggestXML.php?what=" +
document.getElementById("eingabe").value, true);
resObjekt.onreadystatechange = handleResponse;
resObjekt.send(null);
}
function handleResponse()
{
if (resObjekt.readyState == 4) {
xml = resObjekt.responseXML;
// löschen der bestehenden Knoten, bevor die neuen erzeugt werden:
while (document.getElementById("XYX").hasChildNodes()) {
kntn = document.getElementById("XYX").firstChild;
document.getElementById("XYX").removeChild(kntn);
}
// Aufbau der neuen Knoten:
for (i = 0; i < xml.getElementsByTagName("XYX").length; i++) {
newOption = document.createElement("XYX");
newOptionText = document.createTextNode(
xml.getElementsByTagName("XYX")[i].childNodes.data);
document.getElementById("XYX").appendChild(newOption);
document.getElementsByTagName("XYX")[i].appendChild(newOptionText);
}
}
}
function uebernehmeAuswahl()
{
document.getElementById("XYX").value =
document.getElementById("XYX").value;
document.getElementById("XYX").style.visibility = "hidden";
}
if(navigator.appName.search("Microsoft") > -1) { //Browserweiche ist klar...
resObjekt = new ActiveXObject("MSXML2.XMLHTTP");
} else {
resObjekt = new XMLHttpRequest();
}
Wär toll wenn jemand bei der Adressierung in der javaScript Datei helfen könnte... Wie gesagt in meinem ersten Beispiel hats so eingentlich ganz gut funktioniert, nur hier nicht mehr, wenn ich die Daten als XML aufbauen will...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 165175
Url: https://administrator.de/contentid/165175
Ausgedruckt am: 14.11.2024 um 15:11 Uhr
1 Kommentar
xml = resObjekt.responseXML;
xml.getElementsByTagName("XYX")[i].childNodes.data);
das wird so nicht funktionieren, da Du eine Zeichenkette bekommst und kein Objektbaum mit Funktionenxml.getElementsByTagName("XYX")[i].childNodes.data);
... am einfachsten ist es, den HTML Code für dein select in PHP zu erstellen und direkt einzufügen.
document.getElementById('auswahl').innerHTML = resObjekt.responseXML;
http://de.selfhtml.org/javascript/objekte/index.htm