String von MySQL ->PHP -> Javascript: Fehler bei Umbrüchen

driverzrob

Grünschnabel
Wie der Titel schon andeutet, habe ich ein Problem, einen zufälligen Datensatz aus einer MySQL Datenbank mit PHP auszulesen und anschließend an Javascript zu übergeben.

Grundsätzlich funktioniert ja alles, außer wenn in einem Datensatz ein Textumbruch ist.
Die Daten wurden über ein Textfeld in die Datenbank eingelesen.

Dann zeigt mir Javascript einfach keinen String mehr an..
(Folgenden Fehler gibts laut Konsole)


Fehler: unterminated string literal

document.write('Sehr geehrte Damen und Herren,


Das Problem liegt wohl daran, dass write nicht akzeptiert, dass das abschließende ' erst in der nächsten Zeile folgt.

Weiß jemand Rat, wie ich das Problem lösen kann?

lg,
Rob
 
In JS sind Zeilumbrüche in Strings verboten, wenn sie nicht escapet sind. Innerhalb von Anführungszeichen keine normalen Umbrüche, nur "\n"s. Außerhalb darfst du umbrechen, wie du lustig bist. Willst du einen Zeilenumbruch innerhalb musst du ihn escapen:
Javascript:
document.write(
    "Ich bin ein\nZeilenumbruch"
);
Willst du einen String nur über mehrer Zeilen schreiben, musst du ihn aufbrechen und mit dem Verkettungsoperator Plus verketten:
Javascript:
document.write(
    "Ich bin ein"+
    "Zeilenumbruch"
)
Alles andere verursacht nur Fehler. Ist eine blöde Eigenheit von JS, gibts aber noch in einigen Programmiersprachen und Scriptsprachen.
 
Vielen Dank für deine Antwort!


Eigentlich sind die Zeilenumbrüche in der Datenbank sowieso als \n angegeben.
Da dürfte sich JS gar ned weiter beschweren..

Allerdings hab ich im SQL File gesehen, dass es jeweils \r\n heißt.
Wobei \r ja Wagenrückschub bedeutet.
Kanns sein dass sich JS daran aufhängt?

Irgendwie wills nämlich noch nicht klappen, sobald ein Zeilenumbruch im Datensatz steht.

document.writeln(Sehr geehrte Damen und Herren,
blabla.
bla);

steht da bisher dann im Quelltext.. aber wenn ichs dann aus ner anderen Datei per <script [..]src= Attribut einbinden möchte, seh ich nicht, außer wenn kein Zeilenumbruch enthalten ist...

Momentan siehts so aus, dass ich den String aufteile und dann möcht ich ihn halt zeilenweise ausgeben lassen:

Code:
		$data_array = explode("\\r\\n", $data);

		foreach($data_array as $zeile) {
	
			printf("document.writeln(\"".$zeile."+\");");
		}
 
Zuletzt bearbeitet:
Zurück