Autor Thema: Javascript für Fortgeschrittene: Ajax und Antwort ignorieren?  (Gelesen 1550 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Rána

  • Bloody Beginner
  • *
  • Beiträge: 49
  • Geschlecht: Weiblich
  • Username: Rána
Huhu!

Ich hege ja die stille Hoffnung, dass sich hier vielleicht auch Leute rumtreiben, die sich mit fortgeschrittener Javascript-Programmierung auskennen. Ich hab' da nämlich ein Problem.

Im Prinzip will ich asynchron zum Server mehrere Parameter schicken, damit der User abgemeldet wird. Auf eine Antwort vom Server kann ich verzichten.
Ist ja einfach, ne, ein bisschen Ajax, zack, fertig. Funktioniert auch gut, allerdings schickt der Server eine Antwort, nämlich einen Redirect auf eine andere Domäne. Und der IE erfreut mich dann mit der Meldung, dass ich dabei bin, Daten zwischen Domänen auszutauschen und dass das aus Sicherheitsgründen nicht gestattet ist.

Diese Meldung will ich weghaben. (Die Abmeldung klappt nämlich toll.)

Ich habe gestern stundenlang mit .abort() und .readyState experimentiert, aber entweder bekomme ich keine Meldung und der User ist nicht abgemeldet, oder ich bekomme eine Meldung und der User ist abgemeldet.
Unschön.
(Im Firefox bekomme ich es übrigens hin, dass kein Fehler auftritt und der User abgemeldet ist.)

Ich weiß ja, dass Ajax dazu dient, Daten vom Server nachzuladen, aber wie kann ich diese Technik verbiegen, damit ich die Antwort ignorieren kann?
Oder wie kann ich den HTTP-Header auslesen und ihn dann ignorieren?
Oder gibt's ne andere Lösung?

Wenn gewünscht, kann ich auch gerne noch den Quelltext posten.

(Eine andere Lösung als mit Ajax scheint mir nicht möglich, da der User abgemeldet werden soll, wenn er das Browserfenster schließt. Eine Änderung in window.location.href ist da nicht mehr möglich, genauso wenig wie ein Bild laden o.ä..)

Bin für jeden Tipp dankbar!!


Liebe Grüße
Rána  ;->

Offline Andreas

  • Legend
  • *******
  • Ihr könnt mich niederringen, aber nicht halten
  • Beiträge: 6.931
  • Geschlecht: Männlich
  • Username: Korvin
    • My World
Wie sieht denn das Script aus? Ich bin kein Experte, aber wenn ich das Script sehe, kann ich VIELLEICHT was dazu sagen.
Mein Baby

Erster, belegter, echter Opa im Forum.

Offline Wawoozle

  • Sultan des Unterwasser-Kingdoms
  • TechSupport
  • Mythos
  • *****
  • would you kindly
  • Beiträge: 10.620
  • Geschlecht: Männlich
  • Username: Wawoozle
Ajax macht vor allem dann sinn wenn man Server und Client kontrolliert, zumindest während der Entwicklung.
Wenn ich das richtig sehe dann darfst Du zwar die Weboberfläche auf dem Client verwursten hast aber keinen Zugriff auf den Servercode oder ?
« Letzte Änderung: 16.05.2007 | 13:24 von Wawoozle »
Ihr wollt doch alle den Nachtisch zuerst !

Offline Rána

  • Bloody Beginner
  • *
  • Beiträge: 49
  • Geschlecht: Weiblich
  • Username: Rána
Huhu!

Ajax macht vor allem dann sinn wenn man Server und Client kontrolliert, zumindest während der Entwicklung.
Wenn ich das richtig sehe dann darfst Du zwar die Weboberfläche auf dem Client verwursten hast aber keinen Zugriff auf den Servercode oder ?

Exakt. Ich kann die Rückgabe vom Server nicht kontrollieren. Ich will sie nur ignorieren. :)

Mein Quellcode. xmlHttp ist bereits korrekt instantiiert.
   if (xmlHttp) {
       xmlHttp.open('GET', strUriLogoff, true); // true=asynchroner Aufruf, false=synchroner Aufruf
       xmlHttp.onreadystatechange = function(){
          if (xmlHttp.readyState > 0) {
             // Hier auslesen des ReadyStates oder whatever, um die Antwort des Servers zu ignorieren.
             //alert("readystate: " + xmlHttp.readyState);
             //xmlHttp.abort();
          }
       };
       xmlHttp.send(null);
   }

Danke schon mal!


Liebe Grüße
Rána  ;->

Offline Wawoozle

  • Sultan des Unterwasser-Kingdoms
  • TechSupport
  • Mythos
  • *****
  • would you kindly
  • Beiträge: 10.620
  • Geschlecht: Männlich
  • Username: Wawoozle
(Eine andere Lösung als mit Ajax scheint mir nicht möglich, da der User abgemeldet werden soll, wenn er das Browserfenster schließt. Eine Änderung in window.location.href ist da nicht mehr möglich, genauso wenig wie ein Bild laden o.ä..)

D.h. ihr arbeitet zur Validierung einer Session nicht über Cookies die beim schliessen des Browser automatisch gelöscht werden und Serverseitig nicht mit timeouts ?
Ihr wollt doch alle den Nachtisch zuerst !

Offline Rána

  • Bloody Beginner
  • *
  • Beiträge: 49
  • Geschlecht: Weiblich
  • Username: Rána
Huhu!

D.h. ihr arbeitet zur Validierung einer Session nicht über Cookies die beim schliessen des Browser automatisch gelöscht werden und Serverseitig nicht mit timeouts ?

Doch, natürlich, anders geht's ja kaum. RAM-Cookies, Sessions, Timeouts, der ganze Bohei. Aber die Sessions bleiben ewige Zeiten auf dem Server erhalten und ich habe die Aufgabe bekommen, ein Logout-bei-Browser-schließen zu basteln. Und dank von Javascript-Sachkenntnissen größtenteils ungetrübter Einschätzung, habe ich natürlich Ja gesagt, kein Problem. Gib mir drei Tage. :)
Aber ich denke, das bringt uns hier nicht weiter. Denn mein Problem bezieht sich einzig und allein auf das XMLHttpRequest-Objekt und seine Fähigkeiten. Und, nein, ich kann leider nicht auf das serverseitige Programm zugreifen. Das ist eine SAP-Anwendung in ABAP mit dem ITS. :(

Hat jemand ne Idee, wie ich die serverseitige Antwort ignorieren könnte?


Liebe Grüße
Rána ;->

Offline Wawoozle

  • Sultan des Unterwasser-Kingdoms
  • TechSupport
  • Mythos
  • *****
  • would you kindly
  • Beiträge: 10.620
  • Geschlecht: Männlich
  • Username: Wawoozle
Nur zum Verständnis nochmal zusammengefasst.

Hauptziel: Der User soll abgemeldet werden wenn er den Browser schliesst
Dein Weg: Aufruf einer Serverfunktion die das berwerkstelligt über XMLHttpRequest.
Problem: Server sendet einen Redirect den Du ignorieren möchtest.

Da hab ich ein kleines Verständnisproblem :)
Wenn Du deinen Browser schliesst dann interessiert ihn dieser Redirect in der Regel überhaupt nicht.
Ich nehme mal an du triggerst ein JavaScript Event wenn der Browser geschlossen wird ?
Ihr wollt doch alle den Nachtisch zuerst !

Offline Rána

  • Bloody Beginner
  • *
  • Beiträge: 49
  • Geschlecht: Weiblich
  • Username: Rána
Huhu!

[...]
Da hab ich ein kleines Verständnisproblem :)
Wenn Du deinen Browser schliesst dann interessiert ihn dieser Redirect in der Regel überhaupt nicht.
[...]

[...]
Funktioniert auch gut, allerdings schickt der Server eine Antwort, nämlich einen Redirect auf eine andere Domäne. Und der IE erfreut mich dann mit der Meldung, dass ich dabei bin, Daten zwischen Domänen auszutauschen und dass das aus Sicherheitsgründen nicht gestattet ist.

Diese Meldung will ich weghaben. (Die Abmeldung klappt nämlich toll.)
[...]

Will sagen: es geht nicht um das Ausführen des Redirects (das ja auch gar nicht möglich ist, es sei denn ich bearbeite die Serveranwort noch weiter mit Javascript), es geht um die Warnmeldung, die ich nicht haben möchte.
Dass der Browser, wenn das Fenster geschlossen ist, keinen Redirect ausführen kann, weiß ich. Der Browser soll ja auch nix machen. Der kann meinetwegen geschlossen werden oder sonstwas.
Es geht mir hier nur um die doofe Warnmeldung vom IE. Die soll weg. Und die Warnmeldung kommt, weil der IE denkt, es werden via Ajax Daten über Domänengrenzen hinweg ausgetauscht.

Ich nehme mal an du triggerst ein JavaScript Event wenn der Browser geschlossen wird ?

Ja, und das funktioniert auch prima.


Liebe Grüße
Rána ;->