Ajax.Updater im IE

Flash-

Grünschnabel
//EDIT:

Nachdem ich mich jetzt lange genug aufgeregt habe, hab ich nochmal in der prototype.js nachgeschaut.
Ichweiß nicht ob de Coder das so beabsichtigt hatten, aber in der Reihenfolge der Funktionen scheint
ein Fehler zu sein der den Request im IE verhindert. Ändert man die Reihenfolge geht der ganze Mist endlich.
Hab die lösung jetzt nem Kumpel von mir zu verdanken. Von selbst wäre ich erstmal nicht auf die Idee gekommen,
dass Prototype intern einen Fehler hat. Falls es denn tatsächlich einer ist.

Vorher:
Code:
var Ajax = {
  getTransport: function() {
    return Try.these(
               <----------------------------------------------------|
      function() {return new XMLHttpRequest()},                     |
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},      |
      function() {return new ActiveXObject('Microsoft.XMLHTTP')} >--|
    ) || false;
  },

  activeRequestCount: 0
};

Nachher:
Code:
var Ajax = {
  getTransport: function() {
    return Try.these(
      function() {return new ActiveXObject('Microsoft.XMLHTTP')},
      function() {return new XMLHttpRequest()},
      function() {return new ActiveXObject('Msxml2.XMLHTTP')}
    ) || false;
  },

  activeRequestCount: 0
};

--->Vorwort<--- (eig unwichtig)

Hallo alle zusammen,
sollte es schon eine Lösung zu dem Thema geben bitte ich vielmals um Entschuldigung.
Aber nachdem ich jetzt über eine 3/4 Stunde versuche und probiere und suche bin ich dem Wahnsinn nahe.
Mit anderen Worten: Auch die Suche hier hat mir nicht viel weiter geholfen, wobei ich nicht ausschließen will,
dass das daran liegt dass ich so in Rage bin und meine Geduld gerade ausgeschöpft ist.

--->Hier gehts los<--- (auch auf die Gefahr hin dass ich mich endlos blamiere :D)

Nun zu meinem Problem:
Ich benutze Prototype.js und die dazugehörige Funktion "Ajax.Updater".
In Opera und FF funktioniert das Ganze auch wunderbar, doch der IE treibt mich in den Wahnsinn.
Mir werden keine Fehler angezeigt und die restliche Funktion wird ohne murren ausgeführt.
Nur der blöde Ajax.Updater wird vom IE scheinbar vollkommen ignoriert. Selbiges übrigens auch mit Ajax.Request.
Bevor ich lange weiter rede habe ich das ganze mal in Zip-Form angehängt und bedanke mich jetzt schon 1000 mal bei jedem der sich der Problematik annimmt.

Gruß Matze
 

Anhänge

  • page.zip
    32,7 KB · Aufrufe: 23
Zuletzt bearbeitet:
Moin Matze,

sehr interessanter Problemfall :)

Ich habe da mal herumprobiert, und hätte eine Frage:
kann es sein, dass du dies mit einem IE>=7(ok, davon kann man wohl ausgehen)...aber nicht auf einem Webserver probiert hast.

Weshalb ich frage:
Ich hab das natürlich getestet, und konnte es generell nicht nachvollziehen.
Dann habe ich mir dein Beispiel heruntergeladen und die index.html mal einfach so aufgerufen(also übers Dateissystem... file:///etc)
Und es ging nicht. Lade ich es allerdings über meinen localhost, dann geht es.

Meine Vermutung daher:

IE>=7 kennt ja beide Objekte, sowohl XMLHttpRequest(), als auch Microsoft.XMLHTTP

prototypejs nimmt das erste, welches es finden kann, also im Original XMLHttpRequest()
Durch deine Umsortierung nimmt es nun Microsoft.XMLHTTP

Dort, so vermute ich, dürfte der signifikante Unterschied liegen.
Ich habe zwar keine Quelle gefunden, die das bestätigt, aber es scheint, als gestatte XMLHttpRequest() im IE keinen Zugriff übers Dateisystem(Microsoft.XMLHTTP hingegen schon).

Es mag zwar in der Praxis nicht sonderlich wichtig sein, da man Requests idR. von/über einen Webserver abwickelt, aber wie dies Thema hier gezeigt hat, kann es recht verwirrend und zeitraubend sein.
Melde dies doch an die Leute von Prototype, es wäre ja nicht schlecht, dies in die Doku aufzunehmen :)
 
Servus Sven,

In der Tat du hast vollkommen Recht. Ich hab die Seite kein einziges mal auf einem Webserver getestet,
weil ich hier auf der Citrixfarm nicht ohne weiteres einen installieren kann und ich keine Veranlassung dazu hatte.
In meinen Augen ging die ganze Sache ja nämlich nicht.

Werde den Prototyplern wohl mal Nachricht darüber geben und erfragen was es denn damit aufsich hat.
Bin nur froh dass die Problematik jetzt aus meinem Kopf verschwunden ist :D

Gruß Matze
 
Zurück