Moin!
Ich bin neu in Ajax, habe mir heute deswegen Tutorials durchgelesen und mein erstes kleines auto-suggestion script geschrieben, welches mir bei Eingabe Vorschläge mit der responseText Funktion zurückgibt.
Das hat super geklappt, doch möchte ich jetzt dasselbe mit XML durchführen, also das mir XML-Daten zurückgegeben werden, damit ich viel mehr Informationen übertragen kann und die im Nachhinein auswerten kann.
Leider klappt das nicht so wie es soll
Ich möchte also, dass die Daten aus gethint.php (XML-Daten) an index.php weitergeleitet werden und ich sie dort verarbeiten kann.
gethint.php :
PHP-Code:
<?php
header("Content-type: text/xml");
echo "<?xml version='1.0' encoding='ISO-8859-1'?>";
$con= mysql_connect('-','-') or die(mysql_error());
mysql_select_db('-',$con) or die(mysql_error());
echo "<faecher>";
//get the q parameter from URL
$q=$_GET["q"];
//lookup all hints from array if length of q>0
if (strlen($q) > 0) {
$hint="";
$sql = "SELECT
*
FROM
Schule_lehrer
WHERE
Fach LIKE '%$q%'
ORDER BY
Fach ASC";
$result = mysql_query($sql) or die (mysql_error());
if (!mysql_num_rows($result)) {
} else {
while ($row = mysql_fetch_assoc($result)) {
echo "<fach>".$row['Fach']."</fach>";
echo "<lehrer>".$row['Lehrer']."</lehrer>";
}
$hint = "Nicht leer";
}
}
// Set output to "no suggestion" if no hint were found
// or to the correct values
if ($hint == "")
{
echo "<response>no suggestion</response>";
}
else
{
echo "<response>Suggestion</response>";
}
echo "</faecher>";
//output the response
?>
In dem Skript liegt der Fehler meines-erachtens nicht, da ich als Test für $q einfach mal den Wert 'p' zugewiesen habe, und bei alleinigem Aufruf von gethint.php mir das Skript dann die beiden Fächer: Philosophie und Physik, sowie den Response Suggestion (soll mir als Kontrolle dienen) ausgegeben hat.
Hier index.php
PHP-Code:
<html>
<head>
<script type="text/javascript">
function showHint(str)
{
var xmlhttp;
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
xmlDoc=xmlhttp.responseXML;
<!-- document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();
document.write("<table border='1'>");
var x=xmlDoc.getElementsByTagName("faecher");
for (i=0;i<x.length;i++)
{
document.write("<tr><td>");
document.write(x[i].getElementsByTagName("fach")[0].childNodes[0].nodeValue);
document.write("</td><td>");
document.write(x[i].getElementsByTagName("lehrer")[0].childNodes[0].nodeValue);
document.write("</td></tr>");
}
document.write("</table>");
}
</script>
</head>
<body>
<h3>Suche jetzt nach Fächern!:</h3>
<form action="">
Fach: <input type="text" id="txt1" onKeyUp="showHint(this.value)" />
</form>
<!-- <p>Vorschläge: <span id="txtHint"></span></p>
!-->
</body>
</html>
Wie gesagt kenne ich mich mit AJAX und XML nicht wirklich aus, bin gerade erst am Anfang.
Wo liegt das Problem bei dem Skript?
Als Ausgabe erhalte ich nur einen
-
Danke schonmal im voraus!