Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Niedozwolone znaki
Forum PHP.pl > Forum > Po stronie przeglądarki
Spirit86
Witam po dłuższej przerwie 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
siemakuba
zabadaj te funkcje:

encodeURI i decodeURI

pozdr.
Spirit86
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.
erix
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.
Spirit86
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
erix
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.
Spirit86
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 ?smile.gif
erix
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`.
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.