2016-06-16 6 views
0

Ich benutze jQuery, um einen Link zu liefern, wo Benutzer eine TXT-Datei herunterladen können. jQuery ruft nur den Inhalt eines Textbereichs ab und legt ihn als href-Attribut fest. Dies ist notwendig, da der Inhalt des Textfelds mit der Antwort eines Ajax-Aufrufs festgelegt wird.Erstellen Sie TXT-Datei mit jQuery - Zeilenumbrüche erhalten

Der Download der Datei funktioniert wie folgt:

$(document).on('click', '#download', function(){ 
    $(this).attr('href','data:text/plain;charset=utf-8,' + encodeURIComponent($('#kundendaten').val())); 
}); 

Ein Teil der Anruf Antwort Ajax ist das Textfeld:

$kundendaten = '<textarea id="kundendaten">'; 
    $kundendaten .= 'Name: '. $_POST['nachname'] .' '. $_POST['vorname'] . PHP_EOL; 
    $kundendaten .= 'Email: '. $_POST['email'] . PHP_EOL; 
$kundendaten .= '</textarea>'; 

Unter Mac OS ich eine TXT-Datei mit Zeilenumbrüche erhalten und alles ist in Ordnung. Unter Windows fehlen die Zeilenumbrüche in der TXT-Datei. Ich versuchte auch \n anstelle von PHP_EOL, aber es gab keinen Unterschied.

Irgendeine Idee, wie ich das lösen kann?

+0

können Sie versuchen, verwenden '„\ r \ n“' für Zeilenumbrüche statt 'PHP_EOL' Denken Sie daran, sie in doppelte Anführungszeichen setzen – DasSaffe

+0

auf Fenster, die Sie? '\ r \ n' benötigt - es sei denn, Sie öffnen die Datei in einem Texteditor, der DOS-formatierte Zeilenumbrüche unterstützt. Es ist also eine Frage des Betriebssystems und des Editors. –

+0

Die 'PHP_EOL'-Konstante enthält die Zeilenumbruchsequenz _on der Server side_.Das hat offensichtlich nichts mit der Client-Seiten-Sequenz zu tun .. – arkascha

Antwort

0

PHP_EOL funktioniert nur auf dem System, auf dem es ausgeführt wird. Wenn Ihre Website also auf einer Linux-Box gehostet wird, wird die EOL einem Linux-Standard entsprechen.

Das Folgende wäre Ihre beste Wette.

$kundendaten = '<textarea id="kundendaten">' . "\r\n"; 
    $kundendaten .= 'Name: '. $_POST['nachname'] .' '. $_POST['vorname'] . "\r\n"; 
    $kundendaten .= 'Email: '. $_POST['email'] . "\r\n"; 
$kundendaten .= '</textarea>' . "\r\n"; 

Auch wenn Sie dies mit viel während einer Datei würde ich eine konstante Referenzierung „\ r \ n“ erstellen und diese verwenden. (Wenn ich die Syntax richtig erinnere, wie folgt:

DEFINE("_EOL", "\r\n"); 
+0

Ich habe das versucht, aber wie ich in den Kommentar oben geschrieben habe, ändert es nichts – oliverspies

+1

@oliverspies Wenn Sie Notepad verwenden, versuchen Sie es in Notepad ++, Word zu öffnen Pad oder etwas ähnliches. – JokerDan

+1

Hmm, ja, in Wordpad wird es korrekt angezeigt (aber nicht die Sonderzeichen). Obwohl die Option "Zeilenumbruch anzeigen" im Editor aktiviert ist. Also änderte ich .txt in .rtf - alle Benutzer sollten jetzt die Datei in einem anderen Editor öffnen. Vielen Dank – oliverspies

Verwandte Themen