HighDots Forums  

Funktion wird erst nach z.B. alert() ausgeführt

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss Funktion wird erst nach z.B. alert() ausgeführt in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Günter Baier
 
Posts: n/a

Default Funktion wird erst nach z.B. alert() ausgeführt - 09-22-2007 , 01:57 PM






Hallo,

ich habe folgendes für ein XMLHttpRequest() vorgesehen:

eine Funktion arbeitet folgende Zeile ab:
resObjekt.onreadystatechange = handleResponse('formAdd');

die dann diese Funktion aufruft:

function handleResponse(divID)
{

if(resObjekt.readyState == 4)
{
document.getElementById(divID).innerHTML = resObjekt.responseText;
}

}

Alles soweit ganz schön, aber handleResponse() wird nur ausgeführt,
wenn ich z.B. ein alert() einbaue, sonst wird der Inhalt nicht im
DIV angezeigt - FireBug bring an dieser Stelle ganz ordentlich den
Quelltext der eigentlich im DIV stehen sollte - ohne Fehlermeldung.

Kennt jemand dieses Problem bzw. weiss Hilfe dazu?

Danke für Hinweise

Günter


Reply With Quote
  #2  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Funktion wird erst nach z.B. alert() ausgeführt - 09-22-2007 , 03:02 PM






Günter Baier wrote:
Quote:
ich habe folgendes für ein XMLHttpRequest() vorgesehen:

eine Funktion arbeitet folgende Zeile ab:
resObjekt.onreadystatechange = handleResponse('formAdd');
^^^^^^^^^^^
die dann diese Funktion aufruft:

function handleResponse(divID)
{

if(resObjekt.readyState == 4)
{
document.getElementById(divID).innerHTML = resObjekt.responseText;
}

}

Alles soweit ganz schön, aber handleResponse() wird nur ausgeführt,
wenn ich z.B. ein alert() einbaue, [...]
Falcsh. Es wird bereits bei der Zuweisung an die
onreadystatechange-Eigenschaft ausgeführt, und das ist der Fehler. Du
bemerkst diesen jedoch erst, wenn Du window.alert() in handleResponse()
aufrufst, denn das wird dann genau wie handleResponse() immer aufgerufen.

Für einen readystatechange-Listener kannst Du auch keine Argumente
definieren, denn dessen Signatur ist vom DOM (konkret: der
IXMLHTTPRequest-Implementation) vorgegeben. Du suchst daher
möglicherweise Folgendes:

resObjekt.onreadystatechange = function()
{
handleResponse("formAdd");
};

Einfacher wäre es natürlich, gleich die Referenz zum Function-Objekt zuzuweisen:

resObjekt.onreadystatechange = function()
{
if (resObjekt.readyState == 4)
{
document.getElementById("formAdd").innerHTML = resObjekt.responseText;
}
};

Aber das entspricht vielleicht nicht dem Spezialisierungsgrad Deines Ansatzes.


PointedEars
--
var bugRiddenCrashPronePieceOfJunk = (
navigator.userAgent.indexOf('MSIE 5') != -1
&& navigator.userAgent.indexOf('Mac') != -1
) // Plone, register_function.js:16


Reply With Quote
  #3  
Old   
Günter Baier
 
Posts: n/a

Default Re: Funktion wird erst nach z.B. alert() ausgeführt - 09-23-2007 , 01:56 AM



Quote:
Für einen readystatechange-Listener kannst Du auch keine Argumente
definieren, denn dessen Signatur ist vom DOM (konkret: der
IXMLHTTPRequest-Implementation) vorgegeben. Du suchst daher
möglicherweise Folgendes:

resObjekt.onreadystatechange = function()
{
handleResponse("formAdd");
};

ah, genau das wars ... Danke.

Günter


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.