Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Niedozwolone znaki
Spirit86
post
Post #1





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Witam po dłuższej przerwie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

Mam następujący problem:

  1. <script type="text/javascript">
  2. function wyslij(forma){
  3. parent.message.location='shout_core.php?do=add&text='+forma.text.value;
  4. forma.text.value ='';
  5.  
  6. }
  7. <form action="test.php" name="sh" target="message" onSubmit="wyslij(); return false;">
  8. <input type="text" name="text" class="text" size="14" maxsize="100" />
  9. <input class="button" type="button" name="ok" onClick="wyslij(this.form);" value="ok">
  10. </form>
  11. <iframe src="shout_core.php" noresize scrolling="no" frameborder="no" id="message" name="message" height="350" width="180"></iframe>


Powyższy kod wysyła treść z pola text do ramki o nazwie message. Problem polega na tym, ze czasem text (forma.text.value) zawiera najprawdopodobniej niedozwolone znaki, albo coś innego przez co skrypt działa niepoprawnie. W związku z czym mam pytanie, jak zamienić string z pola text na taki, który będzie miły dla przeglądarki. Może użyć funkcji base64_encode a później base64_decode. Tylko jak to zrobić za pomocą JavaScript?

Pozdrawiam

Ten post edytował Spirit86 27.07.2006, 22:56:17
Go to the top of the page
+Quote Post
siemakuba
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


zabadaj te funkcje:

encodeURI i decodeURI

pozdr.
Go to the top of the page
+Quote Post
Spirit86
post
Post #3





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Niestety ta funkcja mi zwraca błąd:


Kod
Błąd: malformed URI sequence
Plik źródłowy: http://localhost/text.html
Wiersz: 3


Ciąg znaków wygląda tak:

fsdaf asdf ąśąś: )assaD " '' asdf '' 543#@$%#%@^

Jakieś pomysły?
pozdr.
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Domyślam się, że to shoutbox.

Najlepszym wyjściem byłaby zmiana metody z GET na POST.
Ewentualnie trzeba by było parę linijek zmienić w kodzie skryptu.
Go to the top of the page
+Quote Post
Spirit86
post
Post #5





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Problem polega na tym, ze na początku dane były przesyłane metodą post. Jednakże występował problem w formularzu, tj. nie wykonywał się on w iframe, tylko na stronie - target=message nie działał, nie wiem czemu, na localu działał bez problemów. Pozatym występował problem kasowania treści inputa po wysłaniu, ale to jest na razie mniej ważne.

pozdrawiam
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




To albo wrzuć formularz w ramke albo wykorzystaj AJAX.
Możesz kombinować z base64 owszem, ale czy jest sens ładowania kolejnej biblioteki tylko dla tego celu? Pisze o libie, bo nie wszystkie przeglądarki mają metody do obsługi base'a.
Go to the top of the page
+Quote Post
Spirit86
post
Post #7





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


nie za bardzo rozumiem Twój pomysł z ajaxem, tam też musze przeslać string z inputa...

może ktoś ma pomysł, czemu nie działa wykonanie formularza w ramce ?(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Jednakże występował problem w formularzu, tj. nie wykonywał się on w iframe, tylko na stronie

Cytat
nie za bardzo rozumiem Twój pomysł z ajaxem, tam też musze przeslać string z inputa...

Ale nie będziesz musiał przejmować się targetem. Owszem, `post` zostanie, ale strona się nie przeładuje. Jedyne, co pozostanie, to odświeżenie ramki z `shoutami`.
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: 20.09.2025 - 02:42