php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.01.2012, 04:04  
Benutzer
 
Registriert seit: 31.12.2009
Beiträge: 76
PHP-Kenntnisse:
Fortgeschritten
Auranores ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Erledigt] Ajax mit XML-Ausgabe Problem

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'?>";

$conmysql_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==&& 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&auml;chern!:</h3>
<form action=""> 
Fach: <input type="text" id="txt1" onKeyUp="showHint(this.value)" />
</form>
<!-- <p>Vorschl&auml;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!
Auranores ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.01.2012, 04:09  
Benutzer
 
Registriert seit: 31.12.2009
Beiträge: 76
PHP-Kenntnisse:
Fortgeschritten
Auranores ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habe jetzt meinen AJAX Kram in die onreadystatechange Funktion gepackt und dann ging es, aber er gibt mir dann nur ein Fach+Lehrer an, und nicht beide. Bei 'p' sollte er mir Physik und Philosophie ausgeben.
Woran liegts?
Auranores ist offline   Mit Zitat antworten
Alt 08.01.2012, 14:48  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Firebug auspacken, response anschauen
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 08.01.2012, 16:36  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Schmeiss bloß alles mit document.write raus, damit überschreibst du gewissermaßen alles bisherige incl. deines javascriptes. Dazu schau dir im Browser den Quellcode nach Ausführung deiner index.php an bzw. was davon noch übrig ist.
Deine Schlagworte sind innerHTML und DOM.
jspit ist offline   Mit Zitat antworten
Alt 08.01.2012, 17:40  
Benutzer
 
Registriert seit: 31.12.2009
Beiträge: 76
PHP-Kenntnisse:
Fortgeschritten
Auranores ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@jspit
Hab mich jetzt mal informiert , und bin hierzu gekommen:

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==&& xmlhttp.status==200)
    {
        
xmlDoc=xmlhttp.responseXML;
var 
txt="";
x=xmlDoc.getElementsByTagName("faecher");
for (
i=0;i<x.length;i++)
  {
  
txt=txt x[i].childNodes[0].nodeValue "<br />";
  }
document.getElementById("myDiv").innerHTML=txt;
 
    <!-- 
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();

}

</script>
</head>
<body>

<h3>Suche jetzt nach F&auml;chern!:</h3>
<form action=""> 
Fach: <input type="text" id="txt1" onKeyUp="showHint(this.value)" />
</form>
<div id="myDiv"></div>
<!-- <p>Vorschl&auml;ge: <span id="txtHint"></span></p> 
!-->
</body>
</html> 
Wenn ich irgendeinen Buchstaben nun eingebe, kommt in myDiv nur "null".
Woran liegts?
Auranores ist offline   Mit Zitat antworten
Alt 08.01.2012, 18:31  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Abgesehen von Trivialfehlern wie ein document.write kann hier keiner deine scripte debuggen. Du solltest den gut gemeinten Rat von rudygotya auch nicht ignorieren und dir anschaun, was dein gethint.php als response liefert. Da du GET benutzt, kannst du den request ja auch über die Browserzeile absetzen.
jspit ist offline   Mit Zitat antworten
Alt 08.01.2012, 18:44  
Benutzer
 
Registriert seit: 31.12.2009
Beiträge: 76
PHP-Kenntnisse:
Fortgeschritten
Auranores ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wie gesagt, der Response gibt genau auch das wieder was ich möchte, bei q=p gibt er :
<faecher><fach>Philosophie</fach><lehrer>Herr Wolter</lehrer><fach>Physik</fach><lehrer>Herr Schultz</lehrer><response>Suggestion</response></faecher>
zurück.
Vearbeite ich diese Daten vielleicht falsch?
Auranores ist offline   Mit Zitat antworten
Alt 08.01.2012, 19:11  
Benutzer
 
Registriert seit: 31.12.2009
Beiträge: 76
PHP-Kenntnisse:
Fortgeschritten
Auranores ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Puh habs geschafft, danke für eure Hilfe!
Auranores ist offline   Mit Zitat antworten
Alt 08.01.2012, 19:37  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Doctype verwenden!
innerHTML ist auch nicht das Gelbe vom Ei - wenn auch um Längen besser als document.write.

Am besten ein document fragment erstellen, nodes hinzufügen und am Ende ins DOM.

Zitat:
Schmeiss bloß alles mit document.write raus, damit überschreibst du gewissermaßen alles bisherige incl. deines javascriptes.
Google Analytics tötet webseiten Er war ja noch nicht am Ende der Ausgabe. Schön is aber wirklich anders.

Zu document.write : http://stackoverflow.com/questions/8...a-bad-practice
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 08.01.2012, 20:18  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Zitat:
Zitat von rudygotya Beitrag anzeigen
Er war ja noch nicht am Ende der Ausgabe. [/url]
Doch! Sein document.write hatte er mit in der function showHint, die er dann mit onKeyUp aufruft.
jspit ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Ajax Paginations Problem (Request bei erreich der letzten möglichen Seite kn0wledge JavaScript, Ajax und mehr 4 01.02.2010 16:32
Problem mit Ajax - Session Problem halskrause PHP Tipps 2009 10 12.01.2010 02:27
[Erledigt] Umlaut Problem in ajax Request da.eXecutoR JavaScript, Ajax und mehr 1 28.11.2009 12:21
[Erledigt] erster post csv ausgabe problem Normalo_looser PHP Tipps 2009 2 02.11.2009 22:07
Ausgabe/ zuordnungs Problem bei verknüpften sql tabellen turboJug3nd PHP Tipps 2009 9 22.06.2009 09:11
[Erledigt] Bilder Ausgabe Problem! gabihh PHP Tipps 2008 24 12.11.2008 16:52
class.GMapper --> Mit Firefox Problem bei Ajax Plague PHP Tipps 2008 3 08.07.2008 10:31
[Erledigt] problem keine ausgabe coraplanet PHP Tipps 2008 12 02.05.2008 18:51
Class Ausgabe Problem wk-moray PHP-Fortgeschrittene 6 12.02.2008 10:06
Problem mit der Ausgabe Kein Genie PHP Tipps 2006 5 26.11.2006 21:24
ajax / popup problem flflfl HTML, Usability und Barrierefreiheit 11 11.06.2006 20:05
Problem mit der Ausgabe PHP Tipps 2005-2 2 29.07.2005 18:09
problem bei ausgabe einer abfrage aus 2 Tabellen Lia PHP Tipps 2005-2 2 28.07.2005 17:30
Problem mit Ausgabe picco PHP Tipps 2004-2 2 24.12.2004 15:38
problem mit ausgabe bei einer "tmp"-table... nautiluS PHP Tipps 2004-2 0 20.12.2004 15:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
xml ausgabe javascript, xmlreponse ajax ausgeben, javascript xmldoc ausgeben, php return xml ausgeben, ajax php xml output, php script get xml content with ajax, ajax xmldoc ausgabe, php xml attribute eintrag suche input

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum