Javascript "Uterminert strenglitteral" Feil

Når du definerer en streng i Javascript, setter du strengen tegn i anførselstegn. Hvis du starter strengen med et enkelt sitat, må du avslutte strengen med et enkelt sitat og unnslippe alle andre enkeltanførselstegn som kan finnes i strengen tekst, for eksempel en apostrof, eller Javascript-tolken den blir forvirret. Når du mottar en "Uterminert strenglitteral" feil i Javascript, betyr det at du startet en streng ved å angi tegn til å ligge i denne strengen, en streng bokstavelig, men du aldri utpekt slutten av strengen, slik at strengen unterminated. Siden Javascript vet ikke hvor strengen slutter og hvor Javascript-kode fortsetter, stopper og gir deg en feil.

Inkludert linjeskift

I Javascript, kan du ikke inkludere linjeskift i en streng ved å inkludere selve linjeskift i strengen definisjon. En multi-linje streng erklæring i Javascript vil føre til en "Uterminert strenglitteral" feil. For eksempel:

// Dette gir en "Uterminert strenglitteral" feil
Var string = "Skriv ut denne
og så dette på en annen linje ";

Sett inn nye linjer i en Javascript-strengen ved hjelp av den nye linjen tegnet "\ n". For eksempel:

Var string = "Skriv ut denne \ nog så dette på en annen linje";

Bruke PHP variabler med linjeskift

Javascript og PHP brukes ofte sammen, som Javascript er en klient-side skriptspråk og PHP er server-side språk. Men hvis du injiserer en PHP variabel som inneholder linjeskift i Javascript-kode, vil du motta en "Uterminert strenglitteral" feil. Siden linjeskift blir satt inn dynamisk under kjøring, kan dette være vanskelig å feilsøke. For eksempel:

<? Php $ text = <<< END
PHP tekst på flere linjer
er OK med heredoc syntaks
SLUTT;
?>
<Script>
Var myVariable = "<? php echo $ tekst;?>";
</ Script>

Feilaktig Nesting Enkle og doble anførselstegn

I Javascript og de fleste andre programmeringsspråk, enkle og doble anførselstegn kan nestes inni hverandre for å lage strenger som inneholder sitater. Hvis du ikke gjør det riktig reir enkle og doble anførselstegn i Javascript, resultatet er vanligvis en "Uterminert strenglitteral" feil. For eksempel:

// Dette gir en "Uterminert strenglitteral" feil på grunn av apostrof
Var string = 'Og hun sa: "Jeg tror ikke det"';

Sprøyte Sitater fra PHP

I likhet med injisering PHP variabler med ny linje, hvis du injiserer PHP variabler med oppdagede sitater, kan du også føre til en "Uterminert strenglitteral" feil. Eksempelet nedenfor kan være en av de vanskeligste å feilsøke fordi feilen oppstår under kjøring og kan bare forekomme. For eksempel, når "Jack O'Brien" sprøytes inn i følgende Javascript-kode fra PHP, fører det til en "Uterminert strenglitteral" feil fordi det siste navnet inneholder en apostrof som ikke rømt.

<Script>
Var name = '<? php echo $ navn;?>';
</ Script>

For å unngå feil, bruk "addslashes" -funksjonen i PHP for å unnslippe apostrof, doble anførselstegn, en skråstrek og en null byte. For eksempel:

<Script>
Var name = '<? php echo addslashes ($ name);?>';
</ Script>