TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
[Problem z IE + javascript] IE się wywala na polskich znakach , kubazzz 10/02/09 01:24 Skrypt jquery wrzuca coś takiego [z ajaxa bierze dane]
$('<div class="dane">'+dane+'</div>').prependTo('#pojemnik');
Strona jest w UTF-8, wszystkie skrypty maja dopisane charset=utf-8, skrypty php sa w utf-8,
ale kiedy w zmiennej 'dane' jest np litera ó [kraków] to dzieje się coś takiego: [IE dolepia coś takiego]
Krak?cript type="text/javascript">
Jeśli jest źdźbło to wyświetla się coś takiego:
?d?b?o
Pytanie - jak sobie z tym poradzić?
Trochę mieszałem w kodowaniach, ale wróciłem ostatecznie do UTF-8, nigdzie poza IE6 nie ma problemów.
PHP zwraca dane prawidłowo.SM-S908 - Prześlij sobie dane JSONem , Conroy 10/02/09 10:49
Nie wiem co powoduje ten problem i nie mam niestety czasu poszukać.
Sugeruję abyś wysłał sobie dane zakodowane JSONem, co powinno Ci problem rozwiązać.
http://pl.php.net/...l/en/function.json-encode.php
Czyli w php tam gdzie do tej pory wypisywałeś dane daj:
json_encode($dane_do_wyslania);
a w JS, tam gdzie teraz odbierasz dane zacznij od:
res = eval ('('+data+')');
i w res masz już swoje dane.
BTW w ten sposób można łatwo wysyłać np. macierze, tak:
- php -
$myArray['status'] = 'ok';
$myArray['content'] = 'ok';
json_encode($myArray);
- js -
res = eval ('('+data+')');
alert (res.status);
alert (res.content);http://flickr.com/photos/myhacien
da - wytłumacz mi składnię tego eval, bo póki co to mi skrypt przestał działać , kubazzz 10/02/09 11:47
wrrr.SM-S908 - ja coś źle robię - kurde. jak wysłać z php JSON i jak odebrać w jQuery? , kubazzz 10/02/09 11:54
NIE MACIERZE, zwykły HTML
Firebug mi dalej się wykrzacza na tym:
missing ) in parenthetical
[Break on this error] ("<a href=\"#\">usu\u0...f3w"<script type="text/javascript"><!--\n
wywala się na pierwszym polskim znaku..SM-S908 - najprostszy wariant , kubazzz 10/02/09 12:01
PHP wyrzuca string, który zawiera tagi html i treść.
$msg = "<div><spancoś tam po polskiemy<br/>ala ma kota</span></div>";
$msg = json_encode($msg);
echo $msg;
javascript:
$.ajax({
type: "GET",
success: function(dane){
var response = eval('('+dane+')');
$("<div class='dane'>"+response+"</div>").prependTo('.nauka')
[pomijajac fakt ze tego do konca nie rozumiem, tego eval, to i tak nie działa, teraz na FF się wywala]
Jak dla idioty.
CO I GDZIE mam dopisać i dlaczego.
Błagam..
ja już mam dość tego gówna, nie chcę się dzisiaj niczego uczyć, po prostu ma działaćSM-S908 - Pewnie już rozwiązałeś, ale , Conroy 10/02/09 21:59
To mi się nie podoba
$("<div class='dane'>"+response+"</div>").prependTo('.nauka')
Tak czy inaczej, nie bardzo wiem, co może u Ciebie nie działać, nie wiem nawet co Ci podpowiedzieć.
Do tego czasu już to pewnie masz z głowy, a ja niestety nie mogłem wcześniej odpisać.
Mówisz, że Eval coś nie tak... może inaczej, zobacz sobie czy to działa, bo po prostu musi:
plik.html
<html>
<body>
<script type="text/javascript">
res = eval ('(' + "\"test - \u0105\u015b\u017c\u017a\u0107\u00f3\u0142\u0119\u0144\u0104\u015a\u017b\u0179\u0106\u00d3\u0141\u0141\u0118\u0143 - test\"" + ')');
alert (res);
</script>
</body>
</html>
Zrobiłem tak, napisałem takiego php (php zapisany w UTF-8):
<?php
echo json_encode (array('test - ąśżźćółęńĄŚŻŹĆÓŁŁĘŃ - test'));
Który wypluł mi na ekran ww. ciąg. Po czym go przekleiłem do html'a. Nie chciało mi się pisać zapytania ajaxowego. JSON zrócił zakodowane polskie znaki. Wyświetliły mi się poprawnie.http://flickr.com/photos/myhacien
da - nie rozwiązałem niestety , kubazzz 10/02/09 22:28
trochę nie mam już siły nad tym myśleć.SM-S908
- Dodaj naglowek , Góral 10/02/09 12:38
Przy wysylaniu odpowiedzi ajaksowej doklej na poczatku:
header ('Content-type: text/html; charset=utf-8');- ino gdzie to dokleić? , kubazzz 10/02/09 13:27
na początku pliku php obslugujacego zapytanie?
czy w jakis sposob na poczatku zmiennej, ktora ten skrypt wyrzuca?SM-S908 - 123 , Góral 10/02/09 14:44
w skrypcie gdzie zwracasz odpowiedz:
$('<div class="dane">'+dane+'</div>').prependTo('#pojemnik');
wklejasz header... przed wywolaniem echo lub print
- to jest jakiś problem z kodowaniem znaków, z konwersją, nie wiem jak to naprawić :/ , kubazzz 10/02/09 14:16
sytuacja wygląda tak, że jeśli mam stronę w UTF-8, zrobię konwersję na ANSI, a potem z powrotem na UTF-8 [konwersja w notepad++] to w jakiś dziwny sposób sypią się znaki w IE, ale tylko w IE.
Nieważne są wtedy deklaracje, po prostu się to pierdoli..
Nawet potrafię to wywołać..SM-S908 - aaaaaaaaaaaaaaaaa , kubazzz 10/02/09 14:18
nie wiem jak to zrobić, chyba tylko przepisanie ręcznie tego pomoże.
no ale bez jaj...SM-S908 - mam koncepcję, że coś się popieprzyło może z kolejnością bajtów , kubazzz 10/02/09 14:54
przy kodowaniu na UTF-8 z ANSI..
bo jesli wytne zawartosc dokumentu [ten kod strony np], zrobie nowy dokument UTF-8, wkleje tam ten kod to notepad++ nie rozpoznaje skladni, tak jakby caly kod byl posiekany bledami.
I wiem, ze wczesniej ten skrypt pod IE działał, ale potem namieszałem z konwersją znaków. Pozornie wróciło do stanu pierwotnego, ale jak widać nie do końca.SM-S908
- Możesz ewentualnie tak spróbować, żeby nie kombinować: , Mcmumin 11/02/09 11:15
function polskie_fiutki ($text) {
$text = str_replace("\xC4\x85", 'ą', $text);
$text = str_replace("\xC4\x84", 'Ą', $text);
$text = str_replace("\xC4\x87", 'ć', $text);
$text = str_replace("\xC4\x86", 'Ć', $text);
$text = str_replace("\xC4\x99", 'ę', $text);
$text = str_replace("\xC4\x98", 'Ę', $text);
$text = str_replace("\xC5\x82", 'ł', $text);
$text = str_replace("\xC5\x81", 'Ł', $text);
$text = str_replace("\xC3\xB3", 'ó', $text);
$text = str_replace("\xC3\x93", 'Ó', $text);
$text = str_replace("\xC5\x9B", 'ś', $text);
$text = str_replace("\xC5\x9A", 'Ś', $text);
$text = str_replace("\xC5\xBC", 'ż', $text);
$text = str_replace("\xC5\xBB", 'Ż', $text);
$text = str_replace("\xC5\xBA", 'ź', $text);
$text = str_replace("\xC5\xB9", 'Ź', $text);
$text = str_replace("\xc5\x84", 'ń', $text);
$text = str_replace("\xc5\x83", 'Ń', $text);
return $text;
}
i użycie:
$imie = polskie_fiutki($_POST['imie']); |
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|