XMLHttpRequest: File überprüfen

KtmnjjpfjsFvzG

New member
Hi, ich nutze einen XMLHttpRequest, um zu überprüfen, ob eine Datei existiert. Das klappt auch ganz gut, das Problem ist aber, dass zumindest Chrome dann in der Console einen Fehler ausgibt, und zwar "GET ... 404 (Not Found)". Das ist zwar nicht besonders schlimm, aber da der 404-Error ja quasi beabsichtigt war und auch abgefangen wird, würde ich diese Nachricht gerne verhindern.

Geht das irgendwie?

mfg, K.
 
Verstehe nicht ganz, was du machen möchtest. Console einfach schließen ist keine Lösung?
Hab es thematisch auch mal nach Ajax verschoben.
 
Doch, klar :D

Irgendwann soll das aber ja mal veröffentlicht werden, und wenn da jetzt ein User mal aus Spaß in die Console guckt, dann denkt er, dass da irgend ein Fehler aufgetreten ist, obwohl das ja eigentlich garnicht der Fall ist. Ich würde also gerne dafür sorgen, dass die Console leer bleibt...
 
Irgendwann soll das aber ja mal veröffentlicht werden, und wenn da jetzt ein User mal aus Spaß in die Console guckt, dann denkt er, dass da irgend ein Fehler aufgetreten ist
Ich denke, dann musst du dir einen "sauberen" Weg überlegen, die Existenz einer Datei zu überprüfen, ohne eine Fehler zu provozieren.
An den Konsolen Ausgaben kann man nichts ändern.
Zeit doch mal die jetzige Lösung. Vielleicht hat jemand eine Idee dazu.
 
So in etwa:
Code:
function file_exists(url, onload){
var ajax = new XMLHttpRequest();
ajax.open('get', url, true);
ajax.addEventListener('readystatechange', function(){if(ajax.readyState == 4)onload(ajax.status == 200);});
ajax.send();
}

//nutzung:

file_exists('test.txt', function(result){alert(result);});
 
OK, schwierig. Für den IE in einem reinen Intranet hätte ich evtl. eine Idee gehabt, nützt ja nichts.
Und wenn du vor diesen Code ein console.log('Prüfe auf Datei xy, ggf. folgt eine Fehlermeldung') packst?
Dann bekommt der geneigte Consolen-Glotzer eine entsprechende Erklärung zur Fehlermeldung. Und wer die Console nicht offen hat, der sieht von allem nichts.
 
Du könntest dir natürlich auch einen Wrapper auf deinen Server packen, der die Existenz der Dateien auf dem Server prüft und dann eine entsprechende Nachricht zurückschickt (genau das gleiche macht ja im Grunde genommen der Server jetzt schon - nur, dass du dann anstatt des HTTP-Status 404 in ein 200 senden kannst und die Information in den Nachrichtenbody steckst).

PS: Der HTTP-Status könnte auch 304 sein...
 
Da dich ja der Dateiinhalt nicht interessiert, nimm einen HEAD Request (ist wie GET, nur daß eben die Datei nicht geladen wird). Dann kannst du in aller Ruhe die Response Header untersuchen.
 
Wenn es um lokale Dateien geht, stehen da doch einige Sicherheitsmechanismen im Weg... außerdem gibt es doch einfachere Wege, um zu prüfen, ob eine lokale Datei existiert - warum sollte man da über den Broser gehen?
 
Wenn die Originalseite nicht über das file-Protokoll aufgerufen wird, greift die SOP, und wenn die Originalseite über "file://" Aufgerufen wird, funktioniert AJAX doch nicht immer (sehen wir hier ja immer mal wieder - ich mach' sowas ja nicht und hab' da auch keine Erfahrung...).
 
Wenn die Originalseite nicht über das file-Protokoll aufgerufen wird, greift die SOP
das ist ja so definiert.


und wenn die Originalseite über "file://" Aufgerufen wird, funktioniert AJAX doch nicht immer (sehen wir hier ja immer mal wieder - ich mach' sowas ja nicht und hab' da auch keine Erfahrung...).
doch, das funktioniert. nur der ie7 (beim 8-ter bin ich mir nicht sicher) hat einen bug im browsereigenen xhr-objekt. mit dem systemeigenen xhr funktioniert es aber auch problemlos.
 
in chrome geht es nicht ohne deaktivierung der sicherheitspolice und starten mit dem parameter, dass das file protokoll erlaubt. insofern würde ich den zu dem ie7 gesellen. FF und Opera müsste ich erst testen, hab ich noch nicht gemacht. Aber das Verhalten ist zumindest oftmals sehr seltsam. Muss da eher kkapsner zustimmen.

Lg kasalop

PS: Aber uU wäre es sinnvoll erstmal den TE sagen zu lassen um welchen fall es denn nun eigentlich geht ^^
 
Zurück
Oben