zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Synchroner XMLHttpRequest und Firefox reagiert nicht mehr

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 27.07.2008, 11:25
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 27.07.2008
Beiträge: 2
kristian befindet sich auf einem aufstrebenden Ast
Standard Synchroner XMLHttpRequest und Firefox reagiert nicht mehr

Hallo zusammen!

Ich bin auf ein eigenartiges Phänomen gestoßen. Ich würde mich über Kommentare und Lösungsvorschläge freuen.

Ich öffne im Firefox eine PHP-Seite (index.php), die eine Session benutzt (z.B. zum Festhalten von Logindaten).
Diese PHP-Seite enthält ein JavaScript, das bei Ausführung (sofort) den Seiteninhalt mittels XMLHttpRequest um nachgeladenen Inhalt erweitert (nachladen.php). Dazu wird in der nachladen.php ebenfalls auf die Sessiondaten zurückgegriffen (ID über Cookie). Der XMLHttpRequest wird synchron abgesetzt, blockiert also die weitere Skriptausführung.
Die PHP-Seite beinhaltet zudem ein Bild, das dynamisch von einem weiteren PHP-Skript (bild.php) aus einer Datenbank geladen wird. Um die Zugriffsberechtigung festzustellen, wird der erfolgreiche Login über die bereits bekannte Session (ID über Cookie oder URL) überprüft.

Die Reaktion von Firefox (2.0.0.15 Linux/Ubuntu, 2.0.0.12 Windows) ist nun, dass er komplett hängt, bis der Timeout meines Apache-Webservers abgelaufen ist. Die Einstellung network.http.keep-alive.timeout (über about:config) hat hierauf scheinbar keine Auswirkung. Nachdem das Timeout nun abgelaufen ist, zeigt Firefox das Bild i.d.R. nicht vollständig an und das Ergebnis des JavaScripts ist meist auch nicht verfügbar.
Eine anschließende Betrachtung mit FireBug zeigte, dass sich teilweise Daten des Bildes zu Beginn der Antwort eines XMLHttpRequest befanden, woraufhin erst der HTTP-Header und der Datenteil des XMLHttpRequest folgten. Wohlgemerkt alles als einzige Antwort, angeblich auf den XMLHttpRequest. Dann ist auch klar, dass das Ergebnis des XMLHttpRequests nicht korrekt durch das Skript weiterverarbeitet werden kann. Leider kann ich FireBug diese Informationen nicht mehr entlocken, dort scheint alles in Ordnung zu sein.
Das Problem tritt im Übrigen auch auf, wenn FireBug nicht installiert/deaktiviert ist (Lukav’s Weblog Blog Archive Firefox firebug and synchronos calls problem).

Benutzt das PHP-Skript zum Laden des Bildes keine Session, so scheint dieses Problem nicht zu existieren. Auch eine Änderung der Session-ID über session_regenerate_id(), nachdem alle relevanten Informationen aus der eigentlichen Session geholt wurden, kann keine Abhilfe schaffen.
Das Mitschicken von Headerinformationen in der Bild-Antwort hat scheinbar keinen Einfluss.

Rufe ich den neuen Inhalt aus dem JavaScript nicht synchron sondern asynchron ab, tritt das Problem scheinbar ebenfalls nicht auf.

Sporadisch hängt der Firefox auch mal nicht. Das kann dann auch gleich zig Male am Stück sein. Das Problem taucht jedoch früher oder später immer wieder auf.

Was mich nun besonders wundert, ist die Vermischung der Antworten von dem nachgeladenen Inhalt und des Bildes, sowie der Einfluss Session/Nicht-Session bei der Ausgabe des "dynamischen Bildes".

Um das eigentliche Problem herauszustellen, habe ich meine Anwendung auf das Wesentliche reduziert und am Ende dieses Posts angehängt.

Über einige Antworten würde ich mich freuen.

MfG
Kristian


Server: Linux/Ubuntu 7.10 Desktop
www: Apache/2.2.4 (Ubuntu)
PHP: PHP 5.2.3-1ubuntu6.3 (cli) (built: Jan 10 2008 09:38:37)
MySQL: mysql Ver 14.12 Distrib 5.0.45, for pc-linux-gnu (i486) using readline 5.2

Getestete Browser:
Firefox 2.0.0.15, Linux/Ubuntu: Problem vorhanden
Firefox 2.0.0.12, Windows: Problem vorhanden
Firefox 3.0.1, Linux/Ubuntu: Problem nicht vorhanden
Firefox 3.0.1, Windows: Problem nicht vorhanden
Opera 9.27, Linux/Ubuntu: Problem nicht vorhanden


=========== index.php ============
PHP-Code:
<?php
    session_start
();
?>
<html><body>
    <h1>Titel</h1>
    <div id="text">Dynamisch.</div>
    <img src="bild.php" />
    <script type="text/javascript"><!--
        document.getElementById("text").innerHTML = document.getElementById("text").innerHTML + "<br />Anfrage stellen.";
        var http;
        if (window.XMLHttpRequest) {
           http = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
           http = new ActiveXObject("Microsoft.XMLHTTP");
        }
        if (http) {
            http.open("GET", "nachladen.php", false); // false = synchron = auf Antwort warten
            http.send(null);
            document.getElementById("text").innerHTML = document.getElementById("text").innerHTML + "<br />Ergebnis:<br />"+http.responseText;
        }
    --></script>
</body></html>
========= nachladen.php ==========
PHP-Code:
<?php
    session_start
();
    echo 
session_id()." Nachladen";
?>
============ bild.php ============
PHP-Code:
<?php
    session_start
();
    
//session_regenerate_id();
    
$sqlconn mysql_connect("localhost""user""pass");
    if (!
$sqlconn)
        die();
    if (!
mysql_select_db("db"))
        die();
    
$sqlres mysql_query("SELECT image FROM tab WHERE id = '1'"$sqlconn);
    if (!
$sqlres)
        die();
    if ((
$sqlrow mysql_fetch_assoc($sqlres)) === false)
        die();
    
mysql_close($sqlconn);
    
$image $sqlrow['image'];
    if (!
$image)
        die();
    echo 
$image;
?>
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 02.08.2008, 09:20
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.729
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

wenn dein PHP Skript ein bild ausgeben soll, musst du auch den entsprechenden Header senden.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 05.08.2008, 14:17
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 27.07.2008
Beiträge: 2
kristian befindet sich auf einem aufstrebenden Ast
Standard

Hallo!

Das mit den Headern habe ich bereits versucht (s.o.) und verwende es auch. Um das Beispiel möglichst einfach zu halten, habe ich es jedoch weggelassen. Ein nachgeladenes Bild interpretiert mein Firefox jedoch mit und ohne Header korrekt und zeigt es an.
Probleme gibt es nur, wenn das Nachladen parallel zu einem blockierenden XMLHTTPRequest geschieht. Die Daten dürften sich auch bei fehlender Headerinformation nicht vermischen.

Kristian
Mit Zitat antworten
  #4 (permalink)  
Alt 05.08.2008, 16:10
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.729
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Es dürfte schwer fallen jetzt mal so eben ein Testcase zusammen zu basteln um deine Aussagen zu überprüfen, ich kann mir aber schwer vorstellen, dass wenn du ein Bild in einem XMLHttpRequest Antwort einbaust, dieses zum aufhängen des Browser führt, aber wenn du das so beobachtest wird es so sein.
Mit Zitat antworten
Antwort

Stichwörter
bild, firefox, php, session, synchron, xmlhttprequest

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Firefox - negativer z-index und generated content? shredder01 CSS 2 10.03.2011 14:29
Benötige dringend Hilfe mit CSS in Firefox & IE :( r4m0n CSS 3 20.03.2009 11:12
Firefox 1.5 Beta 1 Pablo Offtopic 19 13.09.2005 18:56
IE reagiert nicht auf li hover im menü firefox problemlos obp CSS 2 02.03.2005 20:17
Bitte testen mit Firefox und IE (Vergleich!) Spider Site- und Layoutcheck 8 23.09.2004 22:38


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:18 Uhr.