Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с кодировкой при использовании ajax

29K
03 июля 2007 года
SunnyLena
4 / / 03.07.2007
Пишу простенькую программу на php, в которой по выбору значения из выпадающего списка динамически выводится список из БД, в зависимости от выбранного значения. Используется технология ajax.

Все работает, за исключением того, что русские буквы из БД не отображаются корректно в браузерах IE и Мозилла, а вот Опера все нормально показывает. Выбор разных кодировок в браузере не помогает. Кодировка БД win-1251.

Пара функций javascript, связующая html-код страницы с выпадающим списком и php-код выбора из БД такой:

Код:
<script>
var xmlHttp

function showCustomer(str)
{
xmlHttp = null;
if (window.XMLHttpRequest)
{
    xmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlHttp==null)
{
alert ("Браузер не поддерживает запросы HTTP");
return;
}
var url="getcustomers.php";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlHttp.&#111;&#110;readystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(null);
}

function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("txtCustomer").innerHTML=xmlHttp.responseText;
}
}

function GetXmlHttpObject()
{
var objXMLHttp=null
if (window.XMLHttpRequest)
{
objXMLHttp=new XMLHttpRequest()
}
else if (window.ActiveXObject)
{
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
}
return objXMLHttp
}

</script>


На странице тоже вроде объявлена кодировка:
 
Код:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">


Подскажите, что не так?
12
03 июля 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: SunnyLena

На странице тоже вроде объявлена кодировка:
 
Код:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">


Это совершенно ни чего не значит. Нужно смотреть что в заголовках (HTTP headers) посылает сервер. И у меня очень большие подозрения, что в Content-Type там не 1251 написано.

92
03 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
вопрос поднимается с периодичностью раза три в месяц. советую поискать по форуму.
29K
03 июля 2007 года
SunnyLena
4 / / 03.07.2007
Цитата: alekciy
Нужно смотреть что в заголовках (HTTP headers) посылает сервер. И у меня очень большие подозрения, что в Content-Type там не 1251 написано.


А где это посмотреть?

В одной из функций javascript есть строка

 
Код:
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");


Может там надо что-то прописать? Только я не знаю что...
92
03 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
нет, не там. надо прописать там к чему обращается AJAX'ом ваш скрипт. то есть перед тем, как вы отдаёте элементы списка.
29K
03 июля 2007 года
SunnyLena
4 / / 03.07.2007
Большое спасибо! Все заработало.
Добавила в php-файл, который генерит запрос к БД, строку
 
Код:
header("Content-type: text/html; charset=windows-1251");
92
03 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
всё правильно! на здоровье :) но не брезгуйте советами на подобии: "поискать на форуме", 70-80% тем поднимались и не раз ;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог