Auge: Per Javascript feststellen, ob eine Datei existiert - ist das möglich?

Beitrag lesen

Hallo

Problemstellung: Ich möchte eine Verlinkung nur einblenden, wenn eine Datei auf dem Server vorhanden ist. Da diese Sache auf einem Authoring-Tool für Lernanwendungen aufsitzt, kann ich nur Javascript verwenden und (zumindest vermute ich das sehr stark) nicht ohne weiteres weitere Bibliotheken aufsetzen. Um die Dinge beim Namen zu nennen: Es geht um Captivate und die Frage, ob die Datei "a10.pdf" vorhanden ist.

Hier mein letzter Versuch:

var request = new XMLHttpRequest();
request.open('POST','a10.pdf', true);

Du stellst einen Anfrage an eine PDF-Datei, die auf dem Server liegt. Auch wenn PDF aktive Elemente, also Programmcode haben kann, wird dieses PDF mit an Sicherheit grenzender Wahrscheinlichkeit mit deinem Aufruf keinen Code ausführen und damit auch nicht die von dir ausgewerteten Rückgabewerte erzeugen. Damit langet deine vom Status abhängige Verzweigung immer im Else-Zweig.

if (request.status >= 200 && request.status < 300) {
cp.show("a10_but");
         alert('a10.pdf vorhanden');
      } else {
cp.hide("a10_but");
         alert('a10.pdf NICHTvorhanden');
      }; 

Du brauchst auf dem Server ein ausführbares Skript, z.B. ein PHP-Skript. Dieses kannst du mit deinem XMLHTTPRequest aufrufen, wobei du den gewünschten Dateinamen als Parameter übergibst. Das serverseitige Skript prüft, ob die Datei vorhanden ist und gibt den passenden Status, den du in deinem JS-Skript auswerten kannst, zurück.

var tmp=new Image;
    tmp.src='http://xyz.de/test/a10.pdf';
    if(tmp.complete)       
        alert("Datei vorhanden");       
    else       
    alert("Datei nicht vorhanden");

Das ist etwas ganz anderes. Du erzeugst hier ein neues Bild und befüllst es dann mit einer Serverressource als Nutzdaten.

Tschö, Auge

--
Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
Wolfgang Schneidewind *prust*