AJAX - Object expected
Steel
- javascript
Hi!
Ich hab seit kurzem ein keines Problem mit einer Anwendung die AJAX nutzt um zahlreiche Daten on Demand vom Server zu holen oder dort zu speichern. Es funktioniert alles, allerdings bekomme ich im MSIE 6 (es ist nichts anderes vorhanden) die Fehlermeldung 'Object expected'
Und zwar nachdem das Programm einmal durch diese Funktion () gegangen ist:
function loadLocation()
{
alert('enter');
var ausgabe="";
alert('var defined');
if(xmlHttp.readyState == 4)
{
alert('readystate=4');
ausgabe = xmlHttp.responseText;
alert(ausgabe);
eval(ausgabe);
alert('Userdata Processed');
enterUserLabelValues();
}
alert('after check')
} // end function loadLocation()
Das nervige kleine Dreieck das einein Fehler anzeigt kommt genau zwischen dem letztem Alert (after check) und dem 2. Aufruf des ersten Alerts (enter)...
Hier mal ein Auszug des Codes, der das Ganze aufruft:
xmlHttp.open('POST',url, true);
// hier kaeme n switch
xmlHttp.onreadystatechange = loadLocation;
// ende des switch
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", parameter.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(parameter);
Was uebersehe ich hier? Das Programm funktioniert insofern dass es die Daten einliest und in die Formularfelder schreibt. Ausserdem wird vorher eine aehnliche Funktion aufgerufen ohne dass ein Fehler generiert wird.
Huelfe?
Hallo,
... Es funktioniert alles, allerdings bekomme ich im MSIE 6 (es ist nichts anderes vorhanden) die Fehlermeldung 'Object expected'
... wahrscheinlich wird es einfacher sein, einen Browser zu nehmen, der aussagekräftige Fehlermeldungen abgibt, als sich hier per alert() auf die Fehlersuche zu machen.
eine kritische Stelle kann hier sein, wo es von den Daten abhängt, ob eval einen Fehler produziert
alert(ausgabe);
eval(ausgabe);
alert('Userdata Processed');
oder hier, dass "parameter" evtl nicht definiert ist und parameter.length die Fehlermeldung verursacht.
>
> ~~~javascript
> xmlHttp.setRequestHeader("Content-length", parameter.length);
> xmlHttp.setRequestHeader("Connection", "close");
>
> xmlHttp.send(parameter);
>
zum Glück hast du nicht mehr Code gepostet ...
Gruß plan_B
n'abend,
vielleicht findest du einen Hinweis auf Firebug (Firefox Extension) noch nicht ausreichend hilfreich - aber mit Firebug Lite bekämst du auch in anderen Browsern eine akzeptable Konsole. (Leider sind nichtssagende IE-Fehlermeldungen auch in FirebugLite nichtssagend, aber hey, immerhin sinnvollere Ausgabe von Infos mit console.log("wohoo!")
.)
function loadLocation()
{
alert('enter');
var ausgabe="";
alert('var defined');
if(xmlHttp.readyState == 4)
Ist xmlHttp eine »(en)closure«?
{
alert('readystate=4');
Du prüfst den Status der Verbindung, aber nicht welchen HTTP Status Code du zurückbekommen hast? was passiert bei 404? ;)
ausgabe = xmlHttp.responseText;
alert(ausgabe);
eval(ausgabe);
Was evaluierst du denn da?
alert('Userdata Processed');
enterUserLabelValues();
greifst du hier drin möglicherweise auf invalide Referenzen zu?
}
alert('after check')
} // end function loadLocation()
... wahrscheinlich wird es einfacher sein, einen Browser zu nehmen, der aussagekräftige Fehlermeldungen abgibt, als sich hier per alert() auf die Fehlersuche zu machen.
wahrscheinlich wird es sinnlos sein, einen Browser zu nehmen, der aussagekärftige Fehlermeldungen abgibt, da er diesem "Fehler" vielleicht gar nicht zum Opfer fällt?
weiterhin schönen abend...
Hi!
Einen anderen Browser zu nutzen geht nicht. Andere Tools zum Debuggen natuerlich genausowenig. Alles was uber Notepad und IE hinausgeht ist keine Option. Ok. An nem anderen Rechner koennte ich, wenn ich den Kollegen von seinem Stuhl schubse oder spaeter allein hierbin, Frontpage benutzen. (super Verbesserung... -.-)