Announcement

Collapse
No announcement yet.

Ajax Request bleibt bei readyState= 1 hängen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ajax Request bleibt bei readyState= 1 hängen

    Hi,

    ich habe folgendes Problem, bei dem mir bis jetzt noch niemand wirklichen helfen konnte. Ich wende mich daher an die schlauen Köpfe hier im Entwickler Forum.

    In meiner Anwendung gibt es etliche Request die per Ajax aufgerufen werden. Ich verwende das Framework Mootools in der Version 1.2.4.

    Die Request funktionieren in der Regel Problemlos, außer manchmal. Meiner Meinung nach willkürlich wird der Request geöffnet (also readyState= 1) und das wars. Im Firebug hab ich dann neben dem Request einen netten Spinner der anzeigt, das der Request noch läuft. Das Problem was jetzt auftritt ist folgendes: Im orginal Request werden noch 2 Parameter im Header gesetzt (X-Requested-With : XMLHttpRequest, X-Request : JSON) die ich PHP-seitig auswerte. Da der Request nie ankommt wird automatisch ein 2. Request gesendet allerdings ohne die erforderlichen Header angaben, so dass der Request im Endeffekt fehlschlägt.

    Dieses Verhalten passiert ständig und gar nicht. Ich weis auch nicht mehr weiter. Ich hab dann mal einen Feldversuch gestartet um zu schauen, ob das Problem generell oder nur in meiner Anwendung bzw. nur mit Mootools vorkommt.

    Ich hab 2 Ajax Funktionen programmiert (eine klassisch, eine unter der Verwendung von Mootools) und hab beide getestet. Erst die von Mootools, dann die klassische. Die Funktion habe ich periodisch (jede Sekunde) aufgerufen, und geschaut was passiert. Da ein Request auch mal länger dauert, prüfe ich vorher, ob der Request schon fertig ist ansonsten wird abgebrochen. Auch hier das selbe Ergebnis. Der Ablauf funktioniert eine ganze weile. Dann wieder das selbe Problem. Der Request bleibt hängen und nichts passiert mehr (Alle nachfolgenden Funktionsaufrufe werden dann natürlich abgebrochen). Keine Exception kein Fehler.

    Der Fehler passiert Lokal (Firefox 3.6, Safari 4) als auch im Internet. Auch auf einem Mac das selbe Ergebnis. Ich hab echt keine Ahnung warum das passiert.

    Sorry für den langen Text, aber ich weis leider nicht, wie ich es anders beschreiben soll. Ich hoffe auf eure Hilfe.

    der Martin

  • #2
    Hallo,

    kommen die Requests am Webserver an, sprich: Werden die Aufrufe vom Webserver protokolliert?
    Irgendwelche Firewall-Einstellungen auf dem Server die periodische Ajax-Aufrufe als DOS-Attacke einstufen?

    Mal für den Firefox die Erweiterung HTTPFox installiert und die Requests von Browserseite nachverfolgt?

    ...

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      An einer Firewall liegt es sicherlich nicht, da das Problem auch Lokal auftritt, und ich die Firewall deaktiviert habe. Und nein der fehlgeschlagene Request kommt nicht am Server an.

      Aber ich hab mal deine Idee aufgegriffen, und den HTTPFox installiert. Nun zeigt dieser ja genauso wie Firebug alle Requests und Responses an. Und noch einiges mehr. So ist mir beim HTTPFox aufgefallen, das er nach dem ersten fehlgeschlagenen Request eine Anfrage zu eine wpad.dat Datei macht. Google meinte dazu, das wpad Web Proxy Autodiscovery Protocol bedeutet und wohl irgendwie für automatische Proxyanfragen an Servern gedacht ist. Oder so in der Art. Ich hab mich jetzt nicht lange damit aufgehalten aber: Da ist mir die Idee gekommen, das es mit den Proxy Einstellungen des Browsers zusammenhängen könnte. Also hab ich mal ein paar Tests gemacht. Ich hab ein Script, was einfach immer wieder AJAX Request sendet. Wenn nun im FF die Einstellung "Automtische Erkennung für Proxyeinstellungen" an ist, tritt der Fehler auf Jedenfall nach einer Weile auf. Wenn die Einstellung auf "keinen Proxyserver verwenden" gestellt ist scheint das Problem behoben zu sein.

      Kannst du oder irgendjemand anderes erklären, warum das passiert. Gerade Lokal kann ich mir da keinen Reim daraus machen. Auf jeden Fall danke für den Tipp mit dem HTTPFox.

      der Martin

      Comment


      • #4
        Folgende Lösung bzw. Ansatz konnte gefunden werden:

        Beitrag aus dem Ajax Community Forum.

        Vielleicht hat noch jemand eine Idee diesbezüglich. Ansonsten kann der Ansatz vielleicht helfen, falls mal jemand auf so ein Problem stößt.

        der Martin

        Comment

        Working...
        X