jQuery.ajax i znowu polskie litery

0

Cześć, mam bardzo dziwny problem.
Wysyłam żądanie na serwer:

 
this.doRequest = function(request, user_id) 
{
	msg = 'msg='+request+'&user_id='+user_id;
	$.ajax({type: 'GET', url: this.url, data: msg});
}

Żądanie odbieram tak(php):

 $msg = isset($_GET['msg']) ? $_GET['msg'] : '';

I co się okazuje? Wszystko działa, chyba, że użyję innych niż standardowych znaków. Mówiąc: "standardowe znaki" mam na myśli zwykłe ASCII. WSZYSTKIE pliki mam w UTF-8 bez OM. Kodowanie strony też mam w UTF-8 bez BOM. O co tu chodzi?

Efekt jest taki, że $_GET["msg"] jest puste :|

0

Coś jest źle ;)

Szczerze - nie da się Ci tu nic podpowiedzieć, bo najzwyczajniej w świecie "wszystko jest dobrze", a nie działa - coś źle robisz, ale z takiego opisu i kodu nie wynika co. Ukróć swój projekt do minimum, żeby zawierał tylko prosty pliczek z kawałkiem szablonu, plik js z funckja do wysyłania i odbierania danych, plik php odbierający żądanie ajax i odpowiadający na nie - i taką niedziałającą mini-paczkę spakuj to w zipa i wrzuć na forum.

0

No niestety nie chce działać. Kod zmniejszyłem do minimum i nic. Załączam wszystko w paczce.
O dziwo są małe różnice - tutaj, jak wpisuję polskie litery to dostaję ciąg do polskiej litery. Czyli jeśli np. wpiszę:
"TEST" - dostanę "TEST". Ale jeśli wpiszę: "Huśtawka", dostanę: "Hu".

Całość do pobrania jest tutaj:
www.toya.net.pl/~juhas/shout.rar
w archiwum są pliki: backend.php; data.txt; index.html i jquery-1.9.1.js

0

Cometa kojarzę z teorii, w praktyce nie korzystałem, to sie gubi chyba jak mam to samo uruchomione na wielu przeglądarkach, bo wiadomości odbierała mi w zasadzie tylko Opera, a pisałem pod FF (tu czasem działało) i IE (tu zadziałały dwie wiadomości, potem IE z magicznymi ustawieniami "bezpieczeństwa" coś zablokował i nic już nie działało).

W każdym razie:
http://i.imgur.com/miTKofM.jpg

Tak samo działa to na Operze, FF i IE.

Upewnij się czy serwer nie wysyła Ci jakiegoś "domyślnego" nagłówka z kodowaniem, w przypadku, gdy żaden nie jest ustawiony (jak w Twoim pliku php) (np. addDefaultCharset w .htaccess albo w httpd.conf dla Apache)

0

Co zrobiłem. Dodałem w pierwszej linii backend.php:
ini_set('default_charset', 'UTF-8');
Nie pomogło. Zmieniłem ustawienie w httpd.conf:
AddDefaultCharset UTF-8
nie pomogło.

Dodałem w backend.php:
header("Content-type: UTF-8");

i też nic. Otworzyłem sobie w notepad++ plik data.txt i okazało się, że jest sformatowany jako ASCII. Zmieniłem mu na UTF-8 bez BOM i po odświeżeniu strony zobaczyłem polskie znaki, ale po wysłaniu już nie. I nadal jest to samo. Coś jeszcze mogę zmienić? Sprawdzić?

OK, doszedłem do tego, że plik jest zapisywany jako ANSI i wystarczyło dodać przed zapisem:
$msg = iconv("windows-1250","UTF-8", $msg);

Teraz działa.

0

Ja pisałem stronę w ISO latin2. Każde zapytanie ajaxem musiało być w utf8. Nie udało mi się obejść kodowania, jak ajaxem puszczałem w ISO to miałem krzaki, jak w utf8 to było ok.

0

Wydaje mi sie ze to jest odpowiedz.
Gdy przesyłam ajaxem cos do php to w tym pliku wsadzam na poczatku to :

header('Content-Type: application/x-www-form-urlencoded; charset=utf-8');

pojawiły sie polskie litery

1 użytkowników online, w tym zalogowanych: 0, gości: 1