Hallo,
Ich möchte eigentlich nur eine simple xml-Datei auslesen über AJAX.
Das gelingt mir soweit auch nur im Internet Explorer kommt ein leeren XML-Dokument an.
Dabei gehe ich wie folgt vor:
Ich rufe mit einer Funtkion die Request-Methode auf:
in der Requestmethode hole ich mir das http-Request-objekt, und weise dem onreadystatechange eine Methode zu die die gesendeten Daten auslesen soll.
Als Parameter poste ich nur eine Id welche im verlinkten php-Script zum auslesen eines Datensatzes benötigt wird:
Die gewünschte Methode wird auch durch das http-Request aufgerufen und fordert von der Methode getXMLfromRequest das xml-Objekt an.
Die Methode getXMLfromRequest liest dann die XML-Daten von dem http-Request-Objekt aus und übergibt sie. Aber schon in dieser Methode hat das XML-Objekt keine einzigen Kindknoten und ist völlig leer - im Internet Explorer. Opera und Firefox haben dies Problem nicht.
Den größten Teil des Codes habe ich von:
http://www.w3clubs.com/mozdev/httprequest_test_xml.html
Interessant ist, dass der Code auf deren Seite funktioniert. Kopiere ich ihn aber exakt aus dem Quelltext in meine Javascript-Datei habe ich auch hiermit dasselbe Problem, dass der IE nur ein leeres XML-Dokument ausliest.
Ich bin am verzwiefeln.:suspekt:
Ich möchte eigentlich nur eine simple xml-Datei auslesen über AJAX.
Das gelingt mir soweit auch nur im Internet Explorer kommt ein leeren XML-Dokument an.
Dabei gehe ich wie folgt vor:
Ich rufe mit einer Funtkion die Request-Methode auf:
Code:
function dbGetFormPlanData(pid)
{
makeRequest("AJAX/getPlanData.php","fillFormPlanData","plan_id="+pid);
}
in der Requestmethode hole ich mir das http-Request-objekt, und weise dem onreadystatechange eine Methode zu die die gesendeten Daten auslesen soll.
Als Parameter poste ich nur eine Id welche im verlinkten php-Script zum auslesen eines Datensatzes benötigt wird:
Code:
function makeRequest(url,method,post) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
// zu dieser Zeile siehe weiter unten
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
return false;
}
//dem HTTP_Request eine methode Zuweisen die aufgerufen wird wenn der Request Abgeschlossen ist
//addORSCMethod(method);
http_request.onreadystatechange = fillFormPlanData;
http_request.open('POST', url, true);
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http_request.send(post);
}
Die gewünschte Methode wird auch durch das http-Request aufgerufen und fordert von der Methode getXMLfromRequest das xml-Objekt an.
Code:
function fillFormPlanData()
{
var xmldoc=getXMLfromRequest();
if(xmldoc!=null)
{
var row=new Array();
row['vonDate']=xmldoc.getElementsByTagName('vonDate').item(0).firstChild.data;
/*
....
*/
}
}
Die Methode getXMLfromRequest liest dann die XML-Daten von dem http-Request-Objekt aus und übergibt sie. Aber schon in dieser Methode hat das XML-Objekt keine einzigen Kindknoten und ist völlig leer - im Internet Explorer. Opera und Firefox haben dies Problem nicht.
Code:
function getXMLfromRequest() {
var xmldoc=null;
if (http_request.readyState == 4) {
if (http_request.status == 200) {
xmldoc = http_request.responseXML;
//Nach Fehlerausgabe suchen
var fehler=xmldoc.getElementsByTagName('fehler');
//Wenn Fehler gefunden
if(fehler.length > 0)
{
//dann ausgeben
alert(fehler.item(0).firstChild.data);
}
} else {
alert('Bei der Datenabfrage ist ein Problem aufgetreten.');
}
}
return xmldoc;
}
Den größten Teil des Codes habe ich von:
http://www.w3clubs.com/mozdev/httprequest_test_xml.html
Interessant ist, dass der Code auf deren Seite funktioniert. Kopiere ich ihn aber exakt aus dem Quelltext in meine Javascript-Datei habe ich auch hiermit dasselbe Problem, dass der IE nur ein leeres XML-Dokument ausliest.
Ich bin am verzwiefeln.:suspekt: