AJAX-XMLHttpRequest im Objekt problem
ernie
- javascript
Hi zusammen,
ich verzweifle hier noch ..
ich habe mir ein Objekt gebastelt und in diesem möchte ich eine datei laden, asynchron, wenn die datei geladen wurde, soll der inhalt der datei in dem objekt zur verfügung stehen, macht es aber nicht ..
-es soll zwingend asynchron sein
hier ein ausschnitt .. ich verstehe nur nicht warum, es scheint als würde JS in der Funktion das übergebene Objekt kopieren bzw. dass der Pointer aus der Funktion nicht "rauskommt" und das eigentliche Objekt die Daten nicht hält
function ReadConfigXML(filename){
this.data = null;
var xmlHttp = new XMLHttpRequest();
var tObj = this;
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4 ){
tObj.data= xmlHttp.responseText;
}
};
}
danke euch !
Mein Ajax Request:
function updateNews(section,seite,count) {
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) {
var request = xmlhttp.responseText;
document.getElementById('news_content').innerHTML = request;
}
}
xmlhttp.open("GET","ajax/get_news.php?section="+section+"&seite="+seite+"&pageLimit="+count,true);
xmlhttp.send();
}
ich habe mir ein Objekt gebastelt und in diesem möchte ich eine datei laden, asynchron, wenn die datei geladen wurde, soll der inhalt der datei in dem objekt zur verfügung stehen, macht es aber nicht ..
Zeig mal das Objekt.
hier ein ausschnitt .. ich verstehe nur nicht warum, es scheint als würde JS in der Funktion das übergebene Objekt kopieren bzw. dass der Pointer aus der Funktion nicht "rauskommt" und das eigentliche Objekt die Daten nicht hält
Wo übergibst du denn ein Objekt?!
function ReadConfigXML(filename){
this.data = null;
var xmlHttp = new XMLHttpRequest();
var tObj = this;xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4 ){
tObj.data= xmlHttp.responseText;
}
};
}
Wie rufst du die Funktion auf und worauf zeigt this beim Aufruf?
Wenn du die Funktion nicht als Methode eines Objektes oder mit call/apply aufrufst, so zeigt this auf window.
So etwa ginge es:
~~~javascript
var obj = {
readConfigXML : function () {
this.data = null;
var xhr = new XMLHttpRequest();
xhr.open('GET', '...', true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
obj.data = xhr.responseText;
}
};
xr.send(null);
}
};
obj.readConfigXML();
Siehe auch
Konstruktoren, Prototypen und Instanzen
Objektverfügbarkeit und this-Kontext
Mathias