JavaScript "unterminierte String-Literal" Störungen

April 17

Wenn Sie eine Zeichenfolge in JavaScript definieren, werden die Zeichen der Zeichenfolge in Anführungszeichen einschließen. Wenn Sie die Zeichenfolge mit einem Apostroph beginnen, müssen Sie am Ende der Zeichenfolge mit einem Apostroph und andere Apostroph-Zeichen, die in die Zeichenfolgentext, z. B. ein Apostroph enthalten sein können zu entkommen oder der JavaScript-Interpreter wird verwirrt. Wenn Sie eine "Nicht abgeschlossene Zeichenfolgenliteral" in JavaScript Fehlermeldung, es bedeutet, dass Sie eine Zeichenfolge beginnen, durch die Angabe von Zeichen in Zeichenfolge, ein Zeichenfolgenliteral enthalten sein, aber Sie bestimmt nie am Ende der Zeichenfolge die Zeichenfolge unterminierte verlassen. Da JavaScript nicht weiß, wo der String aufhört und wo der JavaScript-Code weiter, es stoppt und gibt Ihnen einen Fehler.

Inklusive Zeilenumbrüche

In JavaScript können nicht Sie Zeilenumbrüche in einer Zeichenfolge enthalten, einschließlich tatsächliche Zeilenumbrüche in der Zeichenfolge-Definition. Eine mehrzeilige Zeichenfolge-Deklaration in JavaScript verursacht Fehler "Nicht abgeschlossene Zeichenfolgenliteral". Zum Beispiel:

Dies führt zu einem Fehler "Nicht abgeschlossene Zeichenfolgenliteral"Var-Zeichenfolge = "Drucken Sie dieseund dann das in einer anderen Zeile";

Legen Sie neue Zeilen in eine JavaScript-String mit der neuen Linie Zeichen "\n." Zum Beispiel:

Var-Zeichenfolge = "Print This\nand dann dies in einer anderen Zeile";

Verwendung von PHP-Variablen mit Zeilenumbrüchen

JavaScript und PHP werden häufig zusammen, wie JavaScript ist eine clientseitige Skriptsprache PHP ist serverseitig Sprache. Jedoch, wenn Sie eine PHP-Variable, die Zeilenumbrüche in JavaScript-Code enthält Spritzen, erhalten Sie einen "Nicht abgeschlossene Zeichenfolgenliteral" Fehler. Da die Zeilenumbrüche dynamisch zur Laufzeit eingefügt werden, kann dies schwierig zu debuggen sein. Zum Beispiel:

<? Php $text = <<< ENDPHP Text in mehreren Zeilenist in Ordnung mit der Heredoc-syntaxENDE;? >< Skript >Var MeineVariable = "<? Php Echo $text;? > ";< / script >

Unsachgemäß Schachteln von einfachen und doppelten Anführungszeichen

In JavaScript und die meisten anderen Programmiersprachen können die einfachen und doppelte Anführungszeichen innerhalb einer anderen Zeichenfolgen erstellen, die Anführungszeichen enthalten geschachtelt werden. Wenn Sie nicht richtig, einfachen und doppelte Anführungszeichen in JavaScript Schachteln, ist das Ergebnis in der Regel eine "Nicht abgeschlossene Zeichenfolgenliteral" Fehler. Zum Beispiel:

Dies erzeugt einen "Nicht abgeschlossene Zeichenfolgenliteral" Fehler wegen der ApostrophVar-Zeichenfolge = "Und sie sagte:"Ich denke nicht so"".

Zitate von PHP Injektion

Ähnlich wie bei der Injektion von PHP-Variablen mit neue Zeilenumbruchzeichen, wenn Sie PHP-Variablen mit ohne Escapezeichen Zitate einfügen, können Sie auch einen "Nicht abgeschlossene Zeichenfolgenliteral" Fehler verursachen. Das folgende Beispiel kann eine der am schwierigsten zu debuggen, da der Fehler zur Laufzeit tritt und nur gelegentlich auftreten. Beispielsweise wenn "Jack O'Brien" in den folgenden JavaScript-Code von PHP injiziert wird, verursacht es einen "Nicht abgeschlossene Zeichenfolgenliteral" Fehler da der Nachname einen Apostroph enthält, der nicht entgangen ist.

< Skript >Var Name = ' <? Php Echo $name;? >';< / script >

Um den Fehler zu vermeiden, verwenden Sie die "Addslashes" Funktion in PHP, einfache Anführungszeichen, doppelte Anführungszeichen, einen umgekehrten Schrägstrich und ein null-Byte zu entkommen. Zum Beispiel:

< Skript >Var Name = ' <? Php Echo addslashes($name);? >';< / script >