D.R.: Opera, HTTP-Weiterleitungen und AJAX

Hallo,

Bevor ich irgendwelche problematischen Browser-Abfragen einfüge, frage ich hier lieber erstmal nach.

Ich programmiere zur Zeit an einem kleinen Dateimanager in PHP. Entsprechend dem unobstruse JavaScript-Prinzip habe ich dabei zuerst alles so Weit erstellt, dass es auch ohne JavaScript läuft. Um sicherzustellen, dass der User einen Reload ausführen kann, ohne die letzte Aktion erneut auszuführen, leite ich ihn per location-Header an den kritischen Punkten an die "ungefährliche" URI weiter (also die gleiche Seite, nur ohne die Aktionsauslösenden Parameter).

Soweit funktioniert es auch.

Um das Ganze dann noch etwas benutzerfreundlicher zu machen, habe ich angefangen, ein umfangreiches JavaScript zu schreiben, das alle Aktionen per AJAX ausführt. Nach längerer Fehleranalyse stellte ich dann fest, dass der Opera eben diesen Weiterleitungen nicht folgt (geht im Firefox ohne Probleme). Also dachte ich mir: Gib den String doch einfach zusätzlich per echo aus und führe einen zusätzlichen Request an die endgültige URI aus - Leider Pustekuchen - Opera zeigt den String nur an (bei Abfrage des responseText(es)), wenn ich die Weiterleitung entferne…

Kennt jemand eine Lösung für das Problem?

mfg. Daniel

  1. Um das Ganze dann noch etwas benutzerfreundlicher zu machen, habe ich angefangen, ein umfangreiches JavaScript zu schreiben, das alle Aktionen per AJAX ausführt. Nach längerer Fehleranalyse stellte ich dann fest, dass der Opera eben diesen Weiterleitungen nicht folgt (geht im Firefox ohne Probleme). Also dachte ich mir: Gib den String doch einfach zusätzlich per echo aus und führe einen zusätzlichen Request an die endgültige URI aus - Leider Pustekuchen - Opera zeigt den String nur an (bei Abfrage des responseText(es)), wenn ich die Weiterleitung entferne…

    Kennt jemand eine Lösung für das Problem?

    Wofür brauchst du denn bei Ajax überhaupt die Weiterleitung?
    Ich kenn deine Skripte nicht, aber bei Ajax besteht kein Grund nach einem sensiblen Request auf eine andere Seite zu leiten, immerhin führt ein Reload der Seite ja nicht dazu dass auch die Ajax Funktion neu aufgerufen wird.
    Somit solltest du die Aufrufe via Ajax mit einem zusätzlichen Parameter kennzeichnen und direkt alles nötige ausgeben statt weiterzuleiten.

    1. Hallo,

      Wofür brauchst du denn bei Ajax überhaupt die Weiterleitung?

      Ich kenn deine Skripte nicht, aber bei Ajax besteht kein Grund nach einem sensiblen Request auf eine andere Seite zu leiten, immerhin führt ein Reload der Seite ja nicht dazu dass auch die Ajax Funktion neu aufgerufen wird.

      Die Weiterleitung ist primär für die Nutzung bei deaktiviertem JS gedacht und ich wollte serverseitig möglichst alles unverändert lassen…

      Somit solltest du die Aufrufe via Ajax mit einem zusätzlichen Parameter kennzeichnen und direkt alles nötige ausgeben statt weiterzuleiten.

      Stimmt eigentlich. Die Weiterleitungen werden ohnehin immer an der gleichen Stelle angestoßen und statt weiterzuleiten, könnte man auch einfach die Parameter im Script ändern. Sollt eigentlich gar nicht so schwer sein.

      Danke für die Anregung, werde ich gleich mal ausprobieren!

      mfg. Daniel