nach Umstieg auf Firefox 3: Status 0 bei AJAX-Request
Michi
- javascript
Hallo,
seit dem Umstieg auf Firefox 3 macht eine best. AJAX-Stelle in einem Portal Probleme:
___________________________________________________________________
function meldesystem ( )
{
http_request2 = false;
if (window.XMLHttpRequest)
{ // Mozilla, Safari,...
http_request2 = new XMLHttpRequest();
if ( http_request2.overrideMimeType )
{
http_request2.overrideMimeType('text/html');
}
}
else if (window.ActiveXObject)
{ // IE
try
{
http_request2 = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
http_request2 = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
beschaeftigt = false;
return false;
}
}
}
if ( ! http_request2)
{
//alert('Cannot create XMLHTTP instance');
beschaeftigt = false;
return false;
}
else
try
{
http_request2.onreadystatechange = meldesystem_meldungen_ausgeben;
url_schauen = './meldesystem/meldesystem.php';
http_request2.open('GET', url_schauen, true);
http_request2.send(null);
}
catch (e)
{
}
}
function meldesystem_meldungen_ausgeben ( )
{
try
{
if (http_request2.readyState == 4)
{
if (http_request2.status == 200)
{
antwort2 = http_request2.responseText;
if ( antwort2.length > 0 )
{
alert ( antwort2 );
}
}
else
{
alert ( 'Problem bei GET-Anfrage 2! Status: ' + http_request2.status );
}
}
}
catch (e)
{
return false;
}
}
___________________________________________________________________
Die Alert-Box in meldesystem_meldungen_ausgeben ( ) gibt plötzlich öfter mal den Status 0 aus, der ja eigentlich nicht definiert ist. In Firefox 2 kam das nicht vor.
Habe dazu folgenden Beitrag gefunden (sonst noch nichts):
http://groups.google.de/group/mozilla.dev.tech.xul/msg/a3221bf29f5f9c39
Klingt nach ähnlicher Problematik, aber wild herumprobieren will ich da auch nicht, vielleicht weiß hier ja jemand Näheres zum Unterschied zwischen Firefox 2 und 3, was den Status von AJAX-Requests betrifft, was es mit mozBackgroundRequest auf sich hat, etc.
Gruß Michi
Firefox 3 AJAX Status 0 XMLHttpRequest
Klingt für mich ganz nach einem Timing-Problem: der readyState ist schon gesetzt, der Status jedoch noch nicht. Kannst Du mal einen Timeout vor die Auswertung vom Status packen?
Gruß, LX
Klingt für mich ganz nach einem Timing-Problem: der readyState ist schon gesetzt, der Status jedoch noch nicht. Kannst Du mal einen Timeout vor die Auswertung vom Status packen?
Bei einer Verzögerung über einen vorgeschalteten Funktions-Aufruf um 2 Sekunden funktioniert es zwar schon um Einiges besser, aber manchmal tritt dieser Fehler dennoch noch auf. Komisch dabei, dass es diesen Fehler im Firefox 2 eben überhaupt nicht gab und jetzt mit Version 3 geht es los...
Kann es sein, dass der Firefox 3 so viel schneller geworden ist? ;-)
Kann es sein, dass der Firefox 3 so viel schneller geworden ist? ;-)
Der FF3 erziehlt bei den Benchmarks zwar tatsächlich mehr Punkte als sein Vorgänger, aber ein so extremes Verhalten ist mir noch nicht untergekommen. Wie lange dauert denn der von Dir verwendete Timeout?
Gruß, LX
Hallo Michi
Kann es sein, dass der Firefox 3 so viel schneller geworden ist? ;-)
Scheint so.
var Start1 = new Date();
for (var i = 0; i < Liste.length; i++) {
Liste2[i] = Liste[i];
}
var Ende1 = new Date();
alert(Ende1-Start1);
Ergibt auf meinem Rechner bei 100000 Elementen:
Auf Wiederlesen
Detlef
function meldesystem ( )
{http_request2 = false;
Ich weiß ja nicht wann du die Funktion aufrufst, aber hier mit globalen Variabeln zu arbeiten ist gefährlich, wenn du bereits vorher ein http_request2 Objekt erstellt hast, ist das von dir beobachtete Verhalten möglich.
Du solltest vielleicht das ganze sauberer programmieren.
Struppi.