Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ajax - brak polskich znaków w IE, w FF wszystko OK
Forum PHP.pl > Forum > XML, AJAX > AJAX
lukaszrw
Mam kod który poprawnie wyświetla polskie znaki w FF.
W IE brak polskich znaków, ale gdy bezpośrednio odwołuję się do skryptu PHP zapytanie.php wszystko wygląda poprawnie - polskie znaki są.
Giną w chwili (tylko w IE) gdy zwracana jest zawartość obiektu znacznikom drzewa <div id='artul'>.
Proszę o pomoc w znalezieniu rozwiazania.

Odwołanie się bezposrednie do zapytanie.php daje w kazdym przypadku prawidłowy wynik, polskie znaczki są.
Baza utf-8.
Kodowanie strony iso-8859-2.
Dodatkowo dodałem:
  1. header('Content-type: text/html; charset=iso-8859-2');

... i nic, w IE brak polskich znaków.

  1. <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN''http://www.w3.org/TR/html4/strict.dtd'>
  2. <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-2'>
  3. <script language="JavaScript" charset="iso-8859-2">
  4.  
  5. function submitForm(url, id_wyd){
  6. var req = null;
  7. document.getElementById("artul").innerHTML = "Started...";
  8.  
  9. if (window.XMLHttpRequest){
  10. req = new XMLHttpRequest();
  11. if (req.overrideMimeType) {
  12. req.overrideMimeType('text/html; charset=iso-8859-2');
  13. }
  14. } else if (window.ActiveXObject) {
  15. try {
  16. req = new ActiveXObject("Msxml2.XMLHTTP.3.0");
  17. } catch (e){
  18. try {
  19. req = new ActiveXObject("Microsoft.XMLHTTP");
  20. } catch (e) {}
  21. }
  22. }
  23.  
  24. req.onreadystatechange = function(){
  25. document.getElementById("artul").innerHTML = "<div class='ajaxPreload'>Wczytuję treść wydarzenia ...</div>";
  26.  
  27. if(req.readyState == 2){
  28. document.getElementById("artul").innerHTML = "<div class='ajaxPreload'></div>";
  29. }
  30. if(req.readyState == 3){
  31. document.getElementById("artul").innerHTML = "<div class='ajaxPreload'>Finisz !</div>";
  32. }
  33. if(req.readyState == 4){
  34. if(req.status == 200)
  35. {
  36. document.getElementById("artul").innerHTML = "koniec pobierania tekstu. " + req.responseText;
  37. } else {
  38. document.getElementById("artul").innerHTML="Error: returned status code " + req.status + " " + req.statusText;
  39. }
  40. }
  41. };
  42. url = url+'?id='+id_wyd;
  43. req.open("GET", url, true);
  44. req.send(null);
  45. }
  46. </head>
  47. <div id='artul'>Wczytaj ...</div>
  48. <a href='#' onclick="submitForm('id','zapytanie.php')" >Wczytaj</a>
  49. </body>
  50. </html>
by_ikar
Kto szuka, ten znajdzie: http://forum.php.pl/index.php?showtopic=67633
lukaszrw
Ten artykół juz znam,
mam:
  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />

oraz
  1. xmlHttp.overrideMimeType('text/html; charset=ISO-8859-2');

w moim przypadku
  1. req.overrideMimeType('text/html; charset=ISO-8859-2');

oraz zapytanie zwraca poprawnie znaki - jeśli sam kod zapytania wywołam bezposrednio z przegladarki IE lub FF.
Szukam błędu w moim skrypcie (!)
by_ikar
Kto szuka, ten najczęściej coś znajduje: http://forum.php.pl/index.php?showtopic=157415
lukaszrw
tego juz prubowałem, dodałem:
  1. $textA = iconv("Windows-1250", "ISO-8859-2", $textA );
  2. echo $textA;

i dalej kwadraciki ... w IE, najprawdopodobniej popełniam jakiś "dziecinny błąd" - którego nie widzę ... http://forum.php.pl/style_images/upgrade_i...icons/icon8.gif

sprubuje jeszcze wykorzystać:
  1. <?php
  2. iconv_set_encoding("internal_encoding", "UTF-8");
  3. iconv_set_encoding("output_encodinf", "ISO-8859-2");
  4. ob_start("ob_iconv_handler");
  5. // Tutaj możemy umieścić resztę kodu skryptu i strony zakodowanego w Unikodzie.
  6. // Do przeglądarki trafi ISO-8859-2
  7. ?>

może powyższy przykład cos poprawi.

wstawiłem do mojego kodu:
  1. iconv_set_encoding($textA, "Windows-1250");
  2. iconv_set_encoding($textA, "ISO-8859-2");
  3. ob_start("ob_iconv_handler");
  4.  
  5. echo $textA;

i teraz tez nic, dalej kwadraciki zamiast polskich znaków w IE, w FF wszystko OK.
erix
Odpal sobie konsolę pod Firefoksem i sprawdź, jakie MIME zwraca serwer z odpowiedzią AJAX.
lukaszrw
Gdybym wiedział co oznacza "Odpal sobie konsolę pod Firefoksem", to bym odpalił i z resztą sobie poradził.
baaasmiley.gif
Ciekawym przykładem braku polskich znaków jest stronka: http://magazynt3.pl/ajax-kurs-od-podstaw-jquery/ poświęcona właśnie Ajaxowi i jquery (exclamation.gif!).
specool.gif
erix
Cytat
Gdybym wiedział co oznacza "Odpal sobie konsolę pod Firefoksem", to bym odpalił i z resztą sobie poradził.

Gdybyś moc obliczeniową swojego mózgu wykorzystywał na poszukiwanie rozwiązania problemu zamiast nad myśleniem, czym wytłumaczyć swoje lenistwo wpadłbyś na to, żeby w google wpisać firefox konsola: https://www.google.com/search?client=opera&...-8&oe=utf-8

Wstyd, leniu.
lukaszrw
masz dowcip party.gifsmile.gif ,
Faktycznie przeoczyłem konsolę błędów - nigdy z niej nie korzystałem! Powalczę z projektem w weekend. Wczoraj kosiłem trawę,...
a w sobotę ma być u nas przy gruncie -20oC exclamation.gif
to dopiero problem exclamation.gif!
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.