2017-11-17 1 views
0

Ich arbeite an der Generierung eines Textes & SQL-Datei, wenn der Benutzer auf Download aus der Abfrage in einem Textbereich auf dem gleichen Formular angezeigt. Ich habe den folgenden Code geschrieben. Aber das Problem ist, dass die URL ersetzt wird und die gesamte Seite nach dem Download automatisch aktualisiert wird. Aus diesem Grund können fortlaufende Operationen nicht durchgeführt werden.Javascript-Methode, um generierte Datei ohne Ersetzen der URL herunterladen

Javascript-Methode

function download() { 
     var element = document.createElement('a'); 
     var filename = document.getElementById("filenameInput").value; 
     var text = document.getElementById("runquerytext").value; 
     element.setAttribute('href', 'data:text/plain;charset=utf-8,' + text); 
     element.setAttribute('download', filename); 

     element.style.display = 'none'; 
     document.body.appendChild(element); 

     element.click(); 

     document.body.removeChild(element); 
} 

Vorschläge, wie ich die erzeugte Datei herunterladen können, ohne nachzuladen/die uri Wechsel wird sehr geschätzt.

Antwort

0

Wenn Sie möchten, dass jemand die Datei herunterlädt, ohne die Seite zu aktualisieren, würde ich Ihnen vorschlagen, einen iframe zu verwenden. Die Seite wird umgeleitet, weil ein "a" -Tag die Seite beim Anklicken umleitet. Also, um das dynamische iframe-Tag mit Javascript oder einem Image-Tag zu generieren. Zum Beispiel:

function download() { 
    var element = document.createElement('iframe'); 
    var filename = document.getElementById("filenameInput").value; 
    var text = document.getElementById("runquerytext").value; 
    element.setAttribute('src', 'data:application/octet-stream;charset=utf-8,' + text); 
    element.setAttribute('download', filename); 
    element.style.display = 'none'; 
    document.body.appendChild(element); 
    } 
+0

ermöglicht dies dem Benutzer das Herunterladen der Datei ohne Aktualisierung/Ersetzen der URL? –

+0

Ich modifizierte den Code als 'element.setAttribute ('href', 'data: application/octet-stream' + text);' aber die URL wird durch 'http: // localhost: 8080/controllers/veditor? FilenameInput = ersetzt me.txt & filetype-combo = 1 & downloadFileBtn = 'und die gesamte Seite wird aktualisiert. –

+0

Warum machen Sie das nicht innerhalb eines Image-Tags? wie oder laden Sie es in einem iframe ?? Würde das helfen? und ja, das würde die Seite aktualisieren, weil Sie einen Link zu dieser Datei machen. Fügen Sie keinen Link ein, verwenden Sie einen unsichtbaren iframe oder ein img-Tag – n00b

Verwandte Themen