Kennt Objekt nicht mehr
nimble
- javascript
Hi
Ich habe mir einen Connector gebastelt, nur kennt der seine eigenen Objekte nicht...
[code lang=javascript]
function ChttpConnector()
{
this.resObjekt = new ActiveXObject("Microsoft.XMLHTTP");
this.getXml = function()
{
this.resObjekt.open('get', 'nr.xml');
this.resObjekt.onreadystatechange = this.handleResponse;
this.resObjekt.send();
}
this.handleResponse = function()
{
if (this.resObjekt.readyState == 4)
{
return this.resObjekt.responseXML;
}
}
}
[code]
Bitte nicht auslachen - bin erst seint 2 Tagen am JS Coden...
Hey,
function ChttpConnector()
{
this.resObjekt = new ActiveXObject("Microsoft.XMLHTTP");this.getXml = function()
{
this.resObjekt.open('get', 'nr.xml');
this.resObjekt.onreadystatechange = this.handleResponse;
this.resObjekt.send();
}this.handleResponse = function()
{
if (this.resObjekt.readyState == 4)
{
return this.resObjekt.responseXML;
}
}
}
und wo genau liegt dein Problem?
Tschö
und wo genau liegt dein Problem?
Die Methode «handleResponse()» wird zwar aufgerufen, kennt aber das Objekt «resObjekt» nicht.
------------------------------
lieber ein Pinguin der läuft
als ein Fenster das hängt
------------------------------
Hey,
> > this.handleResponse = function()
Hier erstellst du eine closure in der this nicht mehr gültig ist.
> > {
> > if (this.resObjekt.readyState == 4)
> > {
> > return this.resObjekt.responseXML;
> > }
> > }
versuch es mit:
var bla = this;
> > this.handleResponse = function()
> > {
> > if (bla.resObjekt.readyState == 4)
> > {
> > return bla.resObjekt.responseXML;
> > }
> > }
Tschö
var bla = this;
this.handleResponse = function()
{
if (bla.resObjekt.readyState == 4)
{
return bla.resObjekt.responseXML;
}
}
Ich hab statt var bla = thi das ResponseObjkt global(?) gemacht:
~~~javascript
var resObjekt = new ActiveXObject("Microsoft.XMLHTTP");
this.getXml = function()
{
worldTurn();
resObjekt.open('get', 'nr.xml');
resObjekt.onreadystatechange = this.handleResponse;
resObjekt.send();
}
this.handleResponse = function()
{
if (resObjekt.readyState == 4)
{
return resObjekt.responseXML;
}
}
nur leider meldet der IE jetzt das «responseXML» null oder kein Objekt sei...
kann das so nicht funktionieren?
THX
Hey,
nur leider meldet der IE jetzt das «responseXML» null oder kein Objekt sei...
kann das so nicht funktionieren?THX
was sagt: return resObjekt.responseText; ?
Tschö
Hi
was sagt: return resObjekt.responseText; ?
gibt das XML schön aus...
Der Fehler scheint sich verlagert zu haben:
this.handleResponse = function()
{
if (resObjekt.readyState == 4)
{
alert (resObjekt.responseText);
return resObjekt.responseText;
}
}
Das alert funktioniert und gibt den XML als Text aus.
der return gibt undefinied zurück, wie das alert zeigt:
window.onload = function()
{
var connector = new ChttpConnector();
alert(connector.getXml());
}
THX
Hi
this.handleResponse = function()
{
if (resObjekt.readyState == 4)
{
alert (resObjekt.responseText);
return resObjekt.responseText;
}
}window.onload = function()
{
var connector = new ChttpConnector();
alert(connector.getXml());
}
Ich habs rausgefunden - ganz schön fies:
con.getXml ruft zwar den HTTP request an, dieser wird aber dann von der Funktion handleResponse verarbeitet und zurückgegeben. Dummerweise liefert die funktion getXml nix zurück also gibts auch nix zum weiterarbeiten... schade :-(
THX
--
ie:} fl:( br:> va:) ls:& fo:# rl:( n4:? ss:) de:] js:| ch:? sh:) mo:? zu:)
\------------------------------
lieber ein Pinguin der läuft
als ein Fenster das hängt
\------------------------------