xmlHttpObject: getElementsByClassName und co anwenden?
Layna
- javascript
Hallo :).
Erst einmal der Ansatz: auf einer normalen HTML-Seite kann man ja z.B. mit document.body.getElementsByClassName('classname'); an Objekte herankommen, die selbst wieder Kinder haben, aus denen kann man wieder mit derartigen Methoden Elemente herausfilter etc.
Jetzt habe ich im Moment aber keine HTML-Seite, sondern das Ergebnis einer Request per xmlHttpObject. Hierauf würde ich nun AUCH gerne die getElementsByClassName-Methode anwenden.
Die einzige Lösung die ich gefunden habe ist ein ActiveX-Objekt, allerdings möchte ich kein ActiveX verwenden müssen.
Gibt es eine Alternative?
Ciao,
Layna
Ja, ActiveX-Objekte gibt es nur bei IE5 und IE6:
function Ajax(funktion,type,url,values,responsetype,contenttype) {
http_request = false;
if(window.XMLHttpRequest) { //Firefox, Chrome, Safari, IE7 ...
http_request = new XMLHttpRequest();
if(http_request.overrideMimeType && responsetype)
http_request.overrideMimeType(responsetype);
}else if (window.ActiveXObject) { //IE5, IE6
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e2) {}
}
}
if(!http_request) {
alert('Fehler: Kein XMLHttpRequest möglich.');
return false;
}
http_request.open(type, url, true);
if(contenttype)
http_request.setRequestHeader('Content-Type', contenttype);
http_request.onload = function () {
funktion.call(http_request.responseText, http_request.responseXML);
};
http_request.onerror = function () {
alert('Fehler: XMLHttpRequest fehlgeschlagen.');
};
http_request.send(values+'');
}
Beispiel für die Benutzung:
Ajax(function(text, xml) {
alert("Antwort als Text: "+text);
alert("XML-Knoten: "+xml.childNodes.length);
},"GET","http://www.beispiel.de:80/","?x=y&a=b","text/xml");
So sollte es gehen. Kann ein paar Fehler enthalten, da ich es auf die Schnelle geschrieben habe.
Ich empfehle Dir aber kein XML sondern JSON zu nutzen, falls Du die Server-Seite ebenfalls selbst geschrieben hast, da es in JS viel einfacher zu benutzen ist.
PS: Wenn Du so etwas wie einen Chat oder ähnliches programmieren willst, wo mehrere Clients gleichzeitig über einen Server Informationen untereinander austauschen sollen, ist es praktisch WebSockets und NodeJs zu nutzen.
Mfg Licht
hi,
Jetzt habe ich im Moment aber keine HTML-Seite, sondern das Ergebnis einer Request per xmlHttpObject. Hierauf würde ich nun AUCH gerne die getElementsByClassName-Methode anwenden.
Kannst Du auch, schreibe die Response innerhalb einer callback-Funktion in das DOM, danach sollte der Zugriff mit den Methoden des DOM kein Problem sein.
Hotti
Hallo Layna,
Jetzt habe ich im Moment aber keine HTML-Seite, sondern das Ergebnis einer Request per xmlHttpObject. Hierauf würde ich nun AUCH gerne die getElementsByClassName-Methode anwenden.
kennst du schon https://developer.mozilla.org/en/AJAX/Getting_Started? Step 4 sollte für dich besonders interessant sein.
Gruß, Jürgen