Arthur Dent: Problem mit http.responseText

N'Abend,

ich nutze ein AJAX-Script, um das Vorhandensein einer PDF-Datei zu prüfen (diese wird "parallel" dazu im Hintergrund erzeugt) und dann anzuzeigen. In den meisten Fällen läuft das auch reibungslos, aber hin und wieder bricht das Script mit der Meldung "Die für diesen Vorgang erforderlichen Daten sind noch nicht verfügbar" ab und verweist auf die Stelle: var response = http.responseText;
Das Script läuft zyklisch ab und bei den ersten x Durchläufen existiert die Datei natürlich noch nicht, aber die obige Deklaration (und der Zugriff auf responseText) erfolgt erst, wenn readyState == 4
Das PDF wird übrigens erzeugt und ist anschließend auch unter dem erwarteten URI zu finden.
Ich habe auch schon versucht, das ganze in ein try/catch zu packen, aber das führt entweder dazu, dass das Script überhaupt nicht mehr läuft (bzw. nur bis zum 1. Mal catch), oder ich bekomme einen "Out of memory" Fehler.

Das Problem tritt auch nicht willkürlich auf, sondern immer bei bestimmten Daten. Allerdings hilft mir das auch nicht weiter... Das ganze ist ein kleines Report-System - der Anwender wählt die gewünschten Daten (vorgegebener Report) und den Zeitraum aus, daraufhin werden die entsprechenden aus 'ner DB geholt und in ein PDF geschrieben. Ein konkretes Problem habe ich nur, wenn ein bestimmter Report als Startzeitpunkt "14.08.2006 00:00:00" hat. Führe ich den entsprechenden Select direkt auf der DB aus, bekomme ich vernünftige Daten, die eigentlich kein Problem verursachen dürften (und wie gesagt, das PDF wird ja erzeugt und der Inhalt passt auch). Nehme ich als Startzeit z.B. "13.08.2006 23:59:59" funktioniert es ohne Probleme und auch dann, wenn ich den 14.08 wähle und die Uhrzeit >= 00:00:59 ist.

Ich weiß, ohne DB, Select und Script zu kennen, ist es schwer, etwas dazu zu sagen, aber vll. hatte ja schon jemand das gleiche Problem?

Für's erste wär ich auch schon mit'nem Workaround zufrieden, oder mit kreativen Ideen...

Gruß,
Arthur D.

--
>> So long, and thanks for all the fish. <<
  1. Hallo,

    Das Script läuft zyklisch ab und bei den ersten x Durchläufen existiert die Datei natürlich noch nicht, aber die obige Deklaration (und der Zugriff auf responseText) erfolgt erst, wenn readyState == 4

    XMLHttpRequest.readyState wird auch 4, wenn der Server ein 404 Not Found zurückgibt. Prüfe zusätzlich, welchen Wert XMLHttpRequest.status hat. Solange der 404 ist, ist die Ressource noch nicht verfügbar.

    viele Grüße

    Axel

    1. Hi,

      XMLHttpRequest.readyState wird auch 4, wenn der Server ein 404 Not Found zurückgibt. Prüfe zusätzlich, welchen Wert XMLHttpRequest.status hat. Solange der 404 ist, ist die Ressource noch nicht verfügbar.

      also eigentlich tu ich das, aber erst nach der fehlerträchtigen Deklaration... werd es jetzt mal vorher abfragen.

      Vielen Dank!

      Gruß,
      Arthur D.

      --
      >> So long, and thanks for all the fish. <<
  2. Hi,

    Für's erste wär ich auch schon mit'nem Workaround zufrieden, oder mit kreativen Ideen...

    Ggf. cacht der Browser den ersten, erfolglosen Versuch. Vermeide mal das Caching durch Anhängen eines Timestamps an den URL als Parameter.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!