Dateiupload ohne Reload der Seite

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Dateiupload ohne Reload der Seite

    Hallo zusammen.

    Vorweg: Ich bin ziemlicher neuling, was AJAX und JS betrifft... außerdem habe ich lange nichts mehr mit PHP gemacht :S

    Folgendes zum aufwärmen:
    Mein Plan ist es, das ein Benutzer eine Datei hochlädt ohne einen "sichtbaren" reload auszulösen.
    Nach dem Upload soll via responseText ein Div Container befüllt werden.

    Hierfür habe ich ein simples Formular erstellt:

    Quellcode

    1. <form method="post" enctype="multipart/form-data" onsubmit="storeFile('Hallo Welt')">
    2. <input type="file" name="datei"/><br/>
    3. <input type="submit" value="Hochladen"/>
    4. </form>
    5. <div id="Ergebnis"></div>

    anm.: 'Hallo Welt' dient nur zum Testen, ob die POST Daten überhaupt übergeben werden. ;)
    normalerweise würde ich mit this.value arbeiten. - Es sei denn, das funktioniert so nicht. ;)

    Mein AJAX habe ich als externe Datei eingebunden. Hier die Funktion:

    Quellcode

    1. function storeFile(str)
    2. {
    3. var xmlhttp = false;
    4. if (window.XMLHttpRequest)
    5. {// code for IE7+, Firefox, Chrome, Opera, Safari
    6. xmlhttp=new XMLHttpRequest();
    7. }
    8. else
    9. {// code for IE6, IE5
    10. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    11. }
    12. function rueckgabe()
    13. {
    14. if (xmlhttp.readyState == 4)
    15. {
    16. var d = document.getElementById("Ergebnis");
    17. d.innerHTML += xmlhttp.responseText;
    18. }
    19. }
    20. xmlhttp.open("POST","upload.php", true);
    21. xmlhttp.onReadystatechange = rueckgabe;
    22. xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    23. xmlhttp.send('a='+str);
    24. }
    Alles anzeigen


    Die upload.php übernimmt den Upload der Datei und den Eintrag in die Datenbank. Hier funktioniert alles, wie es soll (zumindest, wenn ich AJAX außen vor lasse ;) )
    Da ich die Uploadfunktion auskommentiert habe, hat sie auch nur eine Zeile Code damit ich einen Rückgabewert erhalte:

    Quellcode

    1. <?php
    2. print $_POST['a'];
    3. ?>


    Ich hoffe, das ich irgendwie nur zu verwirrt denke, was mein Problem betrifft.
    Die vielfach vorgeschlagene Lösung über nen iFrame möchte ich ungern machen.
    Aber es kann doch nicht so schwer sein, ein paar POST Variablen zu übergeben... oder? ?(

    Danke im Voraus
    Pandemonium