zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden php-generierte xml-Daten werden vom IE nicht interpretiert

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 03.05.2008, 01:32
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 03.05.2008
Beiträge: 5
esviko befindet sich auf einem aufstrebenden Ast
Standard php-generierte xml-Daten werden vom IE nicht interpretiert

Hi all!
Habe ein Formular geschrieben, bei dem durch onChange() eines select-Feldes die Optionen eines weiteren select-Feldes generiert werden sollen. Die Daten hierfür werden aus einer MySQL-Tabelle gelesen. Mit Hilfe von PHP werden XML-Daten generiert, die dann per AJAX an den Browser übergeben werden.
Die ganze Sache funzt im FF, aber der IE macht nicht mit. Das Problem entsteht an folgender Stelle:
übergebe ich dem IE eine fertige xml-Datei, so funktioniert er, wie ich es von ihm erwarte
(ich nutze für den HttpRequest die XHConn library)
myConn.connect("getPlaces.xml", "GET", "IDDistrict="+IDDistrict, fnWhenDone);

übergebe ich ihm aber von PHP generierte xml-Daten, so spielt er nicht mit
myConn.connect("getPlaces.php", "GET", "IDDistrict="+IDDistrict, fnWhenDone);

in der getPlaces.php habe ich natürlich den header auf Content-type: text/xml; gesetzt
<?PHP header('Content-type: text/xml; charset=utf-8'); ... ?>

Hat jemand eine Idee, woran das liegen könnte?
Danke im Voraus!

Gruß
esviko
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 03.05.2008, 12:18
Benutzerbild von kampfgnom
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 22.11.2006
Ort: Radebeul
Beiträge: 1.808
kampfgnom befindet sich auf einem aufstrebenden Ast
Standard

kannst du evtl mal den richtigen source code posten...da kann man meist mehr mit anfangen!!
__________________
Meine Spielwiese: http://blog.kanedo.net
Ich bei Flickr? Da: Flickr: Fotostream von kanedo-projekt
Für open Source Liebhaber: open Com

Auch ich Zwitschere als @kanedo
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 03.05.2008, 13:47
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 03.05.2008
Beiträge: 5
esviko befindet sich auf einem aufstrebenden Ast
Standard

Die Idee:
im 1. select-Feld wähle ich eine Kreistadt. Der Inhalt des 2. select-Feldes wird durch die Wahl des 1. Feldes bestimmt. Hier kommen die zu der Kreisstadt gehörenden Orte rein. Den Job soll AJAX (XHConn library) mit Unterstützung von PHP und MySQL erledigen.

Code:
<!-- 1. select-Feld - enthält die Kreisstädte -->
<select name="district" size="1" onchange="getPlaces(this.value)">
	<option value="2">Höxter</option>
	<option value="20">Paderborn</option>
	<option value="24">Lippe</option>
</select>

<!-- 2. select-Feld - wird von AJAX/PHP generiert bei Auswahl einer Kreisstadt -->
<select id="selectPlaces" name="place" size="1">
	<option> </option>
</select>
Die JavaScriptFunktion 'getPlaces()' übergibt per 'GET' die ID des Kreises an die getPlaces.php, die wiederum durch eine SQL-Abfrage XML-Daten generiert und diese an die 'getPlaces()' zurückgibt. Die XML-Daten werden per JavaScript geparst und in die HTML-Struktur eingebunden.

getPlaces.php sieht in etwa so aus:
PHP-Code:
<?PHP
header
('Content-type: text/xml; charset=utf-8');

/* SQL-Abfrage... speichert das Ergebnis in der $optionPlaces */

print $optionPlaces;
?>
Die von der getPlaces.php generierten XML-Daten sehen in etwa so aus:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<places>
	<place>
		<placeName>Höxter</placeName>
		<placeID>21</placeID>
	</place>
	<place>
		<placeName>Brakel</placeName>
		<placeID>22</placeID>
	</place>
	<place>
		<placeName>Bad Driburg</placeName>
		<placeID>23</placeID>
	</place>
</places>
die 'getPlaces()' sieht so aus:
Code:
function getPlaces(IDDistrict) {
	var myConn = new XHConn();
	var selectPlaces = document.getElementById('selectPlaces');

	var fnWhenDone = function(oXML) {
		var myXML = oXML.responseXML;
		
		for(i=0; i<myXML.getElementsByTagName('place').length; i++){


			var place = myXML.getElementsByTagName('place')[i];
			var placeName = place.getElementsByTagName('placeName')[0].firstChild.data;
			var placeID = place.getElementsByTagName('placeID')[0].firstChild.data;

			var newOPTIONText = document.createTextNode(placeName);
			var newOPTION = document.createElement("option");
			
			selectPlaces.appendChild(newOPTION);
			newOPTION.setAttribute('value', placeID);
			newOPTION.appendChild(newOPTIONText);	
		}
	}
	if (!myConn) alert("XMLHTTP not available. Try a newer/better browser.");
	myConn.connect("getPlaces.php", "GET", "IDDistrict="+IDDistrict, fnWhenDone);
}
Der Witz ist nun folgender...
Wenn ich die XML-Daten nicht von der getPlaces.php generieren lasse, sondern der getPlaces() eine fertige XML-Datei übergebe
Code:
myConn.connect("getPlaces.xml", "GET", "IDDistrict="+IDDistrict, fnWhenDone);
dann kann der IE damit umgehen, sprich, der IE erhält dann ein Objekt, dass nicht null ist.

Meine Vermutung ist, dass der IE Dateien, die keine xml-Endung haben, schlicht und ergreifend nicht als xml-Dateien behandeln will... selbst wenn der Webserver ihm über den Header mitteilt, dass es sich um XML-Daten handelt.

Habe auch versucht, die getPlaces.php (in der die XML-Daten generiert werden) in getPlaces.xml umzubenennen, und dann dem Server über .htaccess mitzuteilen, dass er doch bitte xml-Dateien wie php-Dateien behandeln soll. Aber da macht anscheinend mein Provider nicht mit...

Geändert von esviko (03.05.2008 um 15:40 Uhr) Grund: Ergänzung
Mit Zitat antworten
  #4 (permalink)  
Alt 03.05.2008, 17:22
Benutzerbild von kampfgnom
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 22.11.2006
Ort: Radebeul
Beiträge: 1.808
kampfgnom befindet sich auf einem aufstrebenden Ast
Standard

versuch doch mal heruaszufinden, welche header er bei der *.xml datei mitsendet!
__________________
Meine Spielwiese: http://blog.kanedo.net
Ich bei Flickr? Da: Flickr: Fotostream von kanedo-projekt
Für open Source Liebhaber: open Com

Auch ich Zwitschere als @kanedo
Mit Zitat antworten
  #5 (permalink)  
Alt 03.05.2008, 17:38
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 03.05.2008
Beiträge: 5
esviko befindet sich auf einem aufstrebenden Ast
Standard

verdammt, du hast recht... hier scheint das Problem zu liegen
hier der Header
Code:
GET /erziehungswissenschaft/bsc/admin/content/ajax/getPlaces.php?IDDistrict=20 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, */*
Accept-Language: de
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)
Host: groups.uni-paderborn.de
Connection: Keep-Alive
Cookie: PHPSESSID=4e1c37e29c88f38c94xxxxxx

HTTP/1.1 200 OK
Date: Sat, 03 May 2008 14:31:19 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 314
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
als Content-Type gibt er doch tatsächlich text/html an... Aber wie kann ich dazu zwingen, text/xml anzugeben???
Mit Zitat antworten
  #6 (permalink)  
Alt 03.05.2008, 23:26
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 03.05.2008
Beiträge: 5
esviko befindet sich auf einem aufstrebenden Ast
Standard

Hi Kampfgnom!

Habe die Lösung zu meinem Problem gefunden... Jetzt würde ich die Lösung noch gern verstehen!
Meine getPlaces.php sah eigentlich so aus:
PHP-Code:
<?PHP
header
('Content-type: text/xml; charset=utf-8');
session_start();
include(
'session.php');
include(
'db.connect.php');

/* SQL-Abfrage ... speichern in $optionPlaces */

echo $optionPlaces;
?>
in der 2. Zeile starte ich eine Session
in der 3. Zeile include ich eine datei, die überprüfen soll, ob der User eingelogt ist

Nachdem ich die 2. und 3. Zeile gelöscht habe, steht im Header, den der Webserver an den Client sendet
Code:
Content-Type: text/xml; charset=utf-8
und der IE verhält sich so, wie ich es von ihm erwarte.
Als die 2. und 3. Zeile noch da waren meldete der Server dem Client immer
Code:
Content-Type: text/html; charset=utf-8
Danke jedenfalls für deine Anteilnahme und deine Hilfe! ... bis zum nächsten Problem...

Gruß
esviko
Mit Zitat antworten
  #7 (permalink)  
Alt 09.05.2008, 15:46
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 03.05.2008
Beiträge: 5
esviko befindet sich auf einem aufstrebenden Ast
Standard

Thanx fordfan!
After removing the session_start() the IE is working fine
Mit Zitat antworten
Antwort

Stichwörter
generiert, header, php, xml

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Daten aus externer XML Datei auslesen und anzeigen....... RedBaron2104 (X)HTML 6 10.06.2011 15:36
Einfacher Weg wenige tabellarische Daten per php zu speichern/ändern LichtAnd Serveradministration und serverseitige Scripte 21 06.02.2010 09:55
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 19:09
XML samt Untertags durch PHP ausgeben webazubi (X)HTML 0 21.06.2006 20:13
XML Daten in HTML Tabelle OvD (X)HTML 0 21.06.2006 16:24


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:46 Uhr.