Hallo ChrisB,
Du machst einen *A*synchronen Request, also wird die Funktion mittels onreadystatechange aus dem linearen Ablauf des restlichen Scriptcodes herausgelöst später aufgerufen.
Und damit gibt es auch keine Stelle, "an die" du mittels return etwas zurückgeben könntest.
Deine Funktion file_exist endet, bevor der readystatehandler überhaupt zum Zuge kommt - und da sie selber keinen return-Wert liefert, bekommst du an der aufrufenden Stelle höchstens ein undefined, wenn du dort einen solche in Empfang zu nehmen versuchst.
die Begründung kannte ich bis jetzt noch gar nicht, sie scheint mir aber nicht zutreffend zu sein. Der Aufruf von alert(fe)
zeigt klar und deutlich, das die Variable "fe" zum einen existiert und einen Wert hat, und zum anderen nach Deiner Darstellung entsprechend die Funktion Geschichte ist. Dennoch wird fe korrekt ausgegeben.
Weiterhin besteht beschriebenes Problem im FF 3.0.11 nicht. Auch das spricht gegen Deinen Ansatz.
Aber noch eine andere Anmerkung an Mark:
case 400: fe = false; break;
case 404: fe = false; break;
Status 404 und 410 sagen eindeutig, dass die Ressource nicht vorhanden ist. Status 400 wird im Falle eines unverständlichen Requests ausgegeben. Dies bedeutet aber keines Falls, dass die Ressource nicht vorhanden sei. In wieweit man auch Status 30* zur Aussage "Ressource ist (nicht) vorhanden" subsumiert, ist Implementierungssache des JavaScripts.
Gruß aus Berlin!
eddi
Frei nach z1626: Was wir brauchen ist eine neue Aufklärung - eine "Aufklärung 2.0" wenn man so will.
Wie sehe es bsw. mit Strafverfolgung der Bundesregierung nach § 154 StGB für jedes von Karlsruhe kassierte Gesetz aus? Wurden sie etwa nicht auf das Grundgesetz eingeschworen?