Witajcie. jak w tym skrypcie (http://www.dynamicdrive.com/dynamicindex17/ajaxcontent.htm) zrobić poprawne kodowanie stron, które mają się wyświetlać. Próbowałem zmieniać kodowanie w tychże stronach oraz na stronie głównej. Nie wiem gdzie to zmienić. Ponadto da się wybrać stronę załadowaną od razu na starcie? Może ktoś z was zna się lepiej na tym Ajaxie i może pomóc. Z góry dzięki.
AJAX zawsze zwróci Ci treść zakodowaną w UTF-8, więc jeżeli masz inne kodowanie no to masz problem Jeżeli korzystasz z PHP no to mogę zaprponować takie rozwiązanie dla strony w ISO-8859-2:
Po stronie PHP:
<?php
function AjaxISO($AStr)
{
$ARRPLISO = array('%B1','%E6','%EA',
'%B3','%F1','%F3','%B6','%BC','%BF','%A1','%C6',
'%CA','%A3','%D1','%D3','%A6','%AC','%AF');
$ARRPLUTF16JS = array("%u0105","%u0107","%u0119",
"%u0142","%u0144","%u00F3","%u015B","%u017A","%u017C",
"%u0104","%u0106","%u0118","%u0141","%u0143","%u00D3",
"%u015A","%u0179","%u017B");
$AStr = urlencode($AStr);
$AStr = str_replace($ARRPLISO, $ARRPLUTF16JS, $AStr);
return $AStr;
}
?>
Zwracane teksty puszczamy przez powyższą funkcję. Po stronie JS:
function AjaxISO(tekst)
{
tekst = unescape(tekst);
return tekst.replace(/\+/g, " ");
}
...
var tmp_req = AjaxISO(page_request.responseText);
Sprawdzone pod: IE 6/7, Firefox 2/3, Opera.
Kodowanie strony to także UTF-8, więc własnie nie wiem czemu tak jest. Strona jest w HTML, więc mógłbyś napisać coś więcej o kodzie JS? Wstiawiam normalnie do dokumentu (?):
Chyba, ze jest inne rozwiązanie skoro kodowanie dokumentu to UTF-8.
Przy odczycie poprzez ajax’a u mnie wystarczyło dodać na stronie wczytywanej
header("Content-Type: text/html; charset=iso-8859-2");
Nie rozumiem za bardzo takiego zapisu. Gdzie dokładnie i jak to wpisać bo chyba coś źle robię.
Zakładam że masz jakiś serwer z obsługą php i na nim odpalasz to demko.
Przykładowo masz w demie stronkę external2.htm zamieniasz rozszerzenie na *.php i odpowiedni wpis w index.html
<a href="javascript:ajaxpage('ajaxfiles/external2.php', 'rightcolumn');">Ferrari Pagea> [/code]
Następnie zamień całą treść w pliku external2.php na coś takiego
[code]ąśćęółćźżśęą
W przeglądarce będziesz mieć dziwne znaczki (czasami trzeba wyczyścić cache aby zobaczyć efekt), następnie dopisz na górze pliku
<?php
header("Content-Type: text/html; charset=iso-8859-2");
?>
[/code]
czyli całość powinna wyglądać następująco
[code=php]<?php header(“Content-Type: text/html; charset=iso-8859-2”);?>ąśćęółćźżśęą
i powinieneś zobaczyć polskie literki, natomiast do zapisu poprzez ajax należy użyć odpowiedniej funkcji.