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-Key: 165175

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

Printed on: April 19, 2024 at 21:04 o'clock

Member: nxclass
nxclass Apr 26, 2011 at 11:06:12 (UTC)
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