# Prüfen ob Datei existiert



## Alice (9. Dezember 2013)

Hallo.

Ich suche nach der Möglichkeit mit Javascript zu überprüfen ob eine bestimmte Datei existiert.

Ich sehe aktuell zwei Varianten die evtl. umsetzbar wären.

1. Möglichkeit:
Javacript prüft ohne andere Skripte (PHP usw.) ob die Datei existiert.

2. Möglichkeit:
Es wird über GET oder POST der Dateiname an ein PHP-Skript gesendet. Dieser prüft, ob die Datei vorhanden ist.

Problem:
Bei der 2. Variante habe ich keinen Schimmer wie JS "die Antwort" auf den Request bekommen soll. Es soll - wenn möglich - ja auch schnell gehen.

Das Vorhaben:
Es soll nach dem Klick auf "Absenden" geprüft werden, ob eine TXT-Datei existiert. Dies soll jedoch so oft wie möglich abgefragt werden. Denn wenn die Datei existiert, soll nach einer anderen Datei geprüft werden. Ich möchte so einen "Ladebalken" realisieren. Die TXT-Dateien werden im PHP-Skript erzeugt. Von der "Performence" spielt es auf PHP-Ebene keine Rolle. Habe ich jetzt mehrfach ausprobiert.

HTML Formular -> PHP-Skript -> PHP erstellt Datei -> PHP löscht Datei -> PHP erstellt Datei -> PHP löscht Datei usw.

Ich möchte genau diese Vorgänge erfassen. Ich sehe sonst keine Möglichkeit das umzusetzen.


----------



## ComFreek (9. Dezember 2013)

Hallo Alice,

wenn ich dich richtig verstanden habe, so liegt die Datei auf deinem Server.

1. Möglichkeit: nicht möglich. (Du könntest natürlich einen einfachen GET-Request senden und schauen, ob der Server was zurückliefert - sofern der Datei eine URL zugewiesen ist - doch dies würde ich auch zur 2. Möglichkeit zählen.

2. Möglichkeit: definitiv möglich.



			
				Alice hat gesagt.:
			
		

> Bei der 2. Variante habe ich keinen Schimmer wie JS "die Antwort" auf den Request bekommen soll. Es soll - wenn möglich - ja auch schnell gehen.


Kennst du dich mit AJAX aus? Einfach einen Success-Eventhandler oder readystatechange-Eventhandler hinzufügen.


----------



## Alice (9. Dezember 2013)

Ich kenne mich schon mit Javascript nicht aus... Mit AJAX gar nicht.  Mein PHP ist ganz okey.

Hatte auf ein bisschen Unterstützung gehofft.


----------



## ComFreek (9. Dezember 2013)

Hast du dir schonmal Anleitungen oder Einführungen zu dem Thema angeschaut?

Hier schonmal ein Einstieg 

```
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
  if (xhr.readyState == 4) {
    if (xhr.status == 200) {
      alert(xhr.responseText);
    }
    else {
      alert("PHP-Skript hat einen anderen HTTP-Statuscode als 200 zurückgesendet!");
  }
};
xhr.open("POST", "deine-php-skript-adresse.php");
xhr.send("dateiname=blub");
```
Dieser Code sendet eine AJAX-Anfrage per POST und gibt die zurückgegebenen Daten in einem Meldungsfenster wieder.


----------



## Alice (12. Dezember 2013)

Hallo.

Ich habe jetzt einen guten JS-Code der funktioniert. Kann mir vielleicht jemand helfen den Code zu optimieren?


```
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

<script type="text/javascript">
   var submitted = false;

   function doSubmit()
   {
      if (!submitted)
      {   
         submitted = true;
         var updateDiv = function ()
         {  
            $.get('http://www.meine-seite.de/ladebalken.php',function(d)
            {
               $('#Status').html(d);
               window.setTimeout(updateDiv, 100);
            });
         };

         var deinTimer = window.setTimeout(updateDiv, 100);
         return true;
      }
         else 
      {
         return false;
      }
   }
</script>
```


----------



## ComFreek (12. Dezember 2013)

Hallo,

was willst du denn da optimieren? Willst du Vorschläge, wie du deinen Code verbessern kannst? Oder funktioniert er gar nicht?


PS: Wieso hast du deine anderen 2 Beiträge gelöscht? implode('', file(...)); kann man übrigens auch viel einfacher als [phpf]file_get_contents[/phpf] schreiben.


----------



## jeipack (12. Dezember 2013)

Du willst alle 100ms den Status von ladebalken.php abfragen und den in #Status ausgeben. Das ist schon ok so.
Du könntest setInterval benutzen. Aber das ist eher nebensächlich. Eigentlich gibt es 1000 Möglichkeiten so einen Status abzufragen  Aber wenn das Performancemässig für dich reicht dann ist das schon fein so.


----------



## Alice (12. Dezember 2013)

Jede Art der Verbesserung wäre mir Recht.  Vorschlag?


----------

