#1 18.06.08 19:32
ajax+русские буквы
Есть форма. Эта форма заполняется и нажимается кнопка "отправить". Через явускрипт посредством ajax вызывается php скрипт. Этому скрипту передается сообщение, которое было заполнено в форме.
ПРИМЕР:
Код::
<INPUT TYPE=button onclick="requestdatachat('?id=<?echo $nick;?> ')" VALUE="Сказать" STYLE="border-width:1px; border-color:black">
function requestdatachat(params)
{
name=':'+document.forms[5].message.value;
loadXMLDoc2("add.php"+params+name);
}
function loadXMLDoc2(url) {
req = null;
if (window.XMLHttpRequest) {
try {
req = new XMLHttpRequest();
} catch (e){}
} else if (window.ActiveXObject) {
try {
req = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e){
try {
req = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e){}
}
}
if (req) {
req.onreadystatechange = processReqChange2;
req.open("GET", url, true);
req.send(null);
reqTimeout = setTimeout("req.abort();", 5000);
} else {
alert("Браузер не поддерживает AJAX");
}
}На серверной стороне в php странице прописан заголовок.
Код::
header("Content-type: text/plain; charset=windows-1251");
echo'<?xml version="1.0" encoding="windows-1251" standalone="yes"?>'Если форму заполнить англ. буквами, то все нормально, а если русскими, то обратно возвращаються всякие ероглефы, то есть, текст в другой кодировке, типа такого "ГўГўГўГўГўГўГўГў"
Как это дело можно исправить?
Offline
#7 18.06.08 20:47
Re: ajax+русские буквы
Вообще все идущие на сервер параметры GET/POST, кроме случая multipart/form-data, кодируются в UTF-8. Не в кодировке страницы, а именно в UTF-8. Поэтому надо придумать какие-то перекодирования. В Опере скрипт свой пробывал? Скорее всего в ИЕ и Опере он будет вести себя по разному, поэтому прийдется ставить проверку на текущую кодировку передаваемого текста.
wixus написал(а):
перекинуть в утф =) кодировщиков уйма
это будет наверно реально проще в том что потом в дальнейшем не будет никакого гемороя.
Исправлено Кощей (18.06.08 20:48)
Offline
#9 20.06.08 11:54
Re: ajax+русские буквы
Antony, проблему кажись решил с использованием escape и последующим unescape при получении. Вот только одна проблема:
Код::
var somediv = document.getElementById('layer2');
somediv.innerHTML = unescape(req.responseText);не работает в IE. Это лечится?
При этом проверял под IE, данные приходят.
alert(unescape(req.responseText)); выводит нормальный текст.
Исправлено kai (20.06.08 11:57)
Offline

