XMLHttpRequest liefert ein HTML-Dokument (Wie geht der Download?)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XMLHttpRequest liefert ein HTML-Dokument (Wie geht der Download?)

    Hi,

    per POST sende ich eine Tabelle an ein PHP-Script. Dieses erstellt daraus eine vollständige HTML-Datei und gibt diese per echo zurück. Wieder im JS angekommen möchte ich diese Datei beim readyState == 4 herunterladen bzw. den download-dialog aufrufen lassen. Wie mache ich das? Oder habe ich bereits in PHP einen Fehler gemacht?

    PHP-Code:
    <?php

    $timestamp 
    time();
    $datum date("d.m.Y"$timestamp);
    $datumFile date("d-m-Y"$timestamp);

    ini_set('default_mimetype','text/html');
    header ('Content-Type: text/html');
    header('Content-Disposition: attachment; filename="'.$datumFile.'.html\"');

    $tableHTML '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Statistiken '
    ;

    $tableHTML .= $datum;

    $tableHTML .='</title>
    </head>
    <body>
    <table>'
    ;

    $tableHTML .= $_POST["table"]."\n</table></body>";

    echo 
    $tableHTML;

    ?>

  • #2
    Zitat von Kunze Beitrag anzeigen
    Oder habe ich bereits in PHP einen Fehler gemacht?
    Nein, sondern schon beim Einsatz vom XMLHttpRequest.
    XMLHttpRequest/AJAX ist dafür gedacht, Requests im Hintergrund zu machen - du willst aber nicht Hintergrund, sondern „Vordergrund“.

    Wenn du einen Download-Dialog bekommen willst - dann verzichte auf XMLHttpRequest, sende die Daten ganz normal per Formular an den Server.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Mit alert(http.responseText) kann ich mir wunderbar den ganzen HTML-Code anzeigen lassen, aber ich kann es einfach nicht zum Download anbieten...

      Kommentar


      • #4
        Ok, das werde ich probieren. Und wie veranlasse ich den Client zum zeigen dieses Dialogs?
        Ist das richtig?
        header('Content-Disposition: attachment; filename="youtube-stats-'.$datumFile.'.html\"');

        Kommentar


        • #5
          Und wie veranlasse ich den Client zum zeigen dieses Dialogs?
          Das ist ein schon vielfach diskutiertes Thema - suchen!
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Hallo,

            das solltest du in diesem Fall nicht per AJAX machen, sondern auf dem klassischen Weg über ein Formular. Mit AJAX bleibt der Response auf JS-Ebene. Einen Speichern-Dialog bekommst du dann nur noch per Data-URL hin, aber das wäre zu umständlich.

            Gruß,

            Amica

            Edit: Oh, da war ich aber wieder spät dran, was?
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar

            Lädt...
            X