Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przeniesienie zmiennej z PHP do JS, problem ze znakiem końca wiersza
batman
post 6.01.2008, 17:03:42
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?


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Cezar708
post 6.01.2008, 17:10:40
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 6.01.2008, 17:33:40
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.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
Cezar708
post 6.01.2008, 17:56:13
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 6.01.2008, 18:04:16
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 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.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:53