Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przeniesienie zmiennej z PHP do JS
Forum PHP.pl > Forum > PHP
batman
Mam problem z przeniesieniem zmiennej z PHP do JS. Opiszę cały proces krok po kroku, by łatwiej było zrozumieć naturę problemu.

1. Na stronie znajduje się textarea.
2. Użytkownik wpisuje coś w textarea, oddzielając nowe wiersze enterem.
3. Zapisuję dane do bazy.
4. Użytkownik wchodzi ponownie na stronę.
5. Wyciągam dane zapisane w bazie i przypisuję je do formularza.
6. W przypadku textarea odbywa się to z poziomu JS, ponieważ jest to część generowana dynamicznie (użytkownik ma możliwość kliknąć dodaj opis, co spowoduje wyświetlenie kolejnego textarea).
7. Pojawia się błąd JS:
[code]
unterminated string literal
[Break on this error] var zmienna = 'sd f gdfhx ghff gdfg\n
[/doce]
ponieważ string zawiera znaki końca wiersza, które rozwalają JS.

Jak to obejść, by nie trzeba było generować formularza w PHP?
Cezar708
w js jak zmienna będzie miała \n to oznacza ze bedzie załamanie lini w textarea:

przykład:

  1. <textarea id="ta">
  2.  
  3.  
  4. document.getElementById("ta").innerHTML = "test\ntest";


wieć wystarczy w php zamienić za pomocą str_replace():

  1. <?php
  2. $zmiennaDoTextarea = str_replace("\n", '\n', $tresc);
  3. ?>


i potem podać to do zmiennej w java script:

  1. <textarea id="ta">
  2.  
  3.  
  4. document.getElementById("ta").innerHTML = "<?php echo $zmiennaDoTextarea ?>";


myślę, że pomoże
batman
str_replace już używałem, podobnie jak htmlspecialchars, itp. Nic to nie dało.
Zmienię jednak sposób generowania formularza i zrobię wszystko w PHP. Jednak jeśli da się to zrobić w JS z chęcią poznam rozwiązanie.
Cezar708
no tak.. ale z błędu który przesłałeś:

Kod
unterminated string literal
[Break on this error] var zmienna = 'sd f gdfhx ghff gdfg\n


wynika, że linia w javaScript jest niepoprawnie zakończona... czyli pewnie jest złamanie w samym stringu:

Podejrzewam, że w źródle kod JS wygląda mniej więcej tak:

Kod
var zmienna = 'sd f gdfhx ghff gdfg
reszta ciagu';


niestety taki zapis w JS nie przejdzie, więc trzeba zamienić wszystkie "końce linii" na STRINGA \n, czyli tak, aby w wyniku kod JS wyglądał tak:

Kod
var zmienna = 'sd f gdfhx ghff gdfg\nreszta ciagu';


czyli zanim podasz zmienną z PHP do JS to musisz za pomocą str_replace() zamienić wszystkie znaki końca linii na STRINGA \n!

to spowoduje, że cały string przekazany do JS będzie w jednej linii i nie wystąpi ten błąd co pokazałeś na początku.

uważam że generowanie w PHP... to nie jest dobre wyjście...
batman
Wiem jak brzmi teoria winksmiley.jpg Mam problem z praktycznym zastosowaniem. Jak już napisałem str_replace nie daje rady. A nie mam czasu na kombinowanie zrobiłem generowanie formularza w PHP, które nie jest złym wyjściem. Po prostu zmieni się nieco logika formularza.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.