Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przeniesienie zmiennej z PHP do JS, problem ze znakiem końca wiersza
batman
post
Post #1





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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?
Go to the top of the page
+Quote Post
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
batman
post
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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.
Go to the top of the page
+Quote Post
Cezar708
post
Post #4





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
batman
post
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Wiem jak brzmi teoria (IMG:http://forum.php.pl/style_emoticons/default/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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 10:41