chibi-fighter
Goto Top

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:

<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...

Content-ID: 165175

Url: https://administrator.de/contentid/165175

Ausgedruckt am: 14.11.2024 um 15:11 Uhr

nxclass
nxclass 26.04.2011 um 13:06:12 Uhr
Goto Top
xml = resObjekt.responseXML;
xml.getElementsByTagName("XYX")[i].childNodes.data);
das wird so nicht funktionieren, da Du eine Zeichenkette bekommst und kein Objektbaum mit Funktionen

... 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