Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Wysyłanie danych w AJAXie
Forum PHP.pl > Forum > XML, AJAX
decha-design
Witam was wszystkich,

Cóż, mam wybitny problem z krzakami wysyłanymi przy pomocy jQuery, a dokładnie ajaxem do skryptu i wrzucenie tego do bazy lub pliku, jeden piernik ...

Próbowałem już chyba wszystkiego, szukałem tutaj na forum, znalazłem odpowiedź ale niestety nie działa. Zrobiłem tak:

Początek, zaraz za <body>:
  1. <script type="text/javascript">
  2.  
  3. $.ajaxSetup({
  4. type: "POST",
  5. contentType: "application/x-www-form-urlencoded; charset=iso-8859-2"
  6. });
  7.  


Wykonanie akcji:
  1. $.post("url.php", { name: value, id: id } );


No i sam skrypt php:
  1. <?php
  2. header('Content-Type: text/html; charset=iso-8859-2');
  3.  
  4. $_POST['name'] = (string)$_POST['name'];
  5. $_POST['id'] = (int)$_POST['id'];
  6.  
  7. $_POST['name'] = mysql_real_escape_string($_POST['name']);
  8. $_POST['id'] = mysql_real_escape_string($_POST['id']);
  9.  
  10. $_POST['name'] = addslashes($_POST['name']);
  11. $_POST['id'] = addslashes($_POST['id']);
  12.  
  13. $db -> query("SET NAMES `latin2`");
  14.  
  15. $db -> query("UPDATE `".$prefix."categories` SET `name`='".$_POST['name']."' WHERE `id`='".$_POST['id']."'");
  16. ?>


Żadna funkcja filtrująca nie robi problemu (raczej), bo wyłączyłem wszystkie na próbę - efekt ten sam ...

Kompletnie nie wiem jak to naprawić. Owszem mogę zmienić na UTF-8, ale za dużo roboty, bo pliki z tekstem mam już w iso-8859-2 i jakoś bardziej mi leży to kodowanie. Dodatkowo mogę wspomnieć, że błąd jest na bank, 100% w jQuery, ponieważ dodawanie wpisu do bazy normalną metodą, po prostu POSTem działa bez najmniejszych problemów ...

btw. kodowanie tabeli bodajże latin2_general_ci ..

Pzdr.
paziek
plik ze skryptem oraz z formularzem są w iso-8859-2?
Spróbuj po stronie PHP
  1. <?php
  2. $_POST['name']=inconv('utf-8','iso-8859-2',$_POST['name']);
  3. ?>
decha-design
Wiem, tak też zrobiłem ... ale nie koniecznie na każdym serwerze może być obsługa iconv .. chyba że jest standardowo ...

Może wie ktoś jak zrobić polskie znaki bez iconv?
paziek
Jest jeszcze recode, mb_convert_encoding i może coś jeszcze.
Zazwyczaj będziesz miał je wszystkie, a powinno być przynajmniej jedno z nich.. chyba, że masz gównianego hosta jakiegoś.

Nie da się jakoś zamienić krzaczków utf-8 na iso-8859-2 za pomocą (np.) str_replace i tym podobnym. Chociaż mogę sie mylić..
decha-design
Da się, bo przy utf-8 na iso są krzaki a nie questionmark.gif ... więc bez problemu, ale po co? =)

No cóż, widać że nic z tego ... zostajemy przy iconv. Hosta mam na netlook, bardzo dobry ale regulamin jest straszny więc nie wiadomo czy będzie to tam dzialać - nie sprawdzałem bo pisze skrypt na localhoście ...
paziek
Tak, ale te krzaczki się powtarzają dla różnych odpowiedników w polskim języku.
Np. masz krzaczek X dla ą oraż ł.
Skąd będziesz wiedział na co zamienić?

Tak jak mówiłem, funkcje do konwersji w PHP to raczej standard (aczkolwiek da się skompilować bez ich obsługi), także nie masz się co martwić. Każdy host, który ich nie udostępnia, jest niepoważny :<
decha-design
No to tyle w tej kwestii =) Wielkie dzięki za poradę / wytłumaczenie / opisanie hostów ... niepotrzebne skreślić.

Najwyżej w instalatorze zrobię (jeżeli w ogóle będzie) sprawdzanie bibliotek albo cuś ...

jeszcze raz dzięki ...
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.