Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сбои в кодировке при передаче 
:(
    Опции темы
Black_leopard
Дата 19.2.2007, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Недавно начал изучать Ajax, написал первый пример, но возникла проблема с кодировкой, просмотрел все топики с подобными вопросами, перепробовал все что было написано, но это все равно не помогло, посмотрите пожалуйста где нужно поменять кодировку? И еще почему-то данный код работает в Firefox и Opera, но не как не хочет работать в IE.

Файл index.html
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Урок 1</title>
        <meta http-equiv="Content-Type" content="text/html; charset=cp1251" />
        <script type="text/javascript" src="Lesson1.js"></script>
    </head>
    <body onload="process()">
        Сервер желает узнать ваше имя:
        <input type="text" id="myName" /><br />
        <div id="divMessage" />
    </body>
</html>


Файл Lesson1.js
Код

//запомнить ссылку на объект XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();

//создать объект XMLHttpRequest
function createXmlHttpRequestObject() {
    var xmlHttp;
    if (window.ActiveXObject) {
        try 
        {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e)
        {
            xmlHttp = false;
        }
    }
    else {
        try
        {
            xmlHttp = new XMLHttpRequest();
        }
        catch (e) 
        {
            xmlHttp = false;
        }
    }
    if (!xmlHttp) 
        alert('Ошибка создания объекта XMLHttpRequest');
    else 
        return xmlHttp;    
}

function process() {
    //работа возможна только если объект xmlHttp не занят
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
        name = encodeURIComponent(document.getElementById("myName").value);
        //выполнить ассинхронный запрос
        xmlHttp.open("GET", "Lesson1.php?name="+name,true);
        xmlHttp.onreadystatechange = handleServerResponse;
        xmlHttp.send(null);
    }
    else {
        setTimeout("process()", 1000);        
    }
}

function handleServerResponse() {
    if (xmlHttp.readyState == 4)
    {
        if (xmlHttp.status == 200)
        {
            xmlResponse = xmlHttp.responseXML;
            xmlDocumentElement = xmlResponse.documentElement;
            helloMessage = xmlDocumentElement.firstChild.data;
            document.getElementById("divMessage").innerHTML = '<i>'+helloMessage+'</i>';
            setTimeout("process()", 1000);
        }
        else 
        {
            alert("При обращении к серверу возникли проблемы: " + xmlHttp.statusText);
        }
    }
}


Файл Lesson1.php
Код

header("Content-Type: text/xml");
    echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
    echo '<response>';
        $name = $_GET['name'];
        $arrayName = array("ЮРИЙ", "ВАСЯ");
        if (in_array(strtoupper($name), $arrayName)) {
            echo "Здравствуйте, мастер ".htmlentities($name)."!";
        }
        else if (trim($name) == "") {
            echo "Скажи мне, как зовут тебя, незнакомец!";
        }
        else {
            echo htmlspecialchars($name).'. мы еще не знакомы!';
        }        
    echo '</response>';

PM MAIL   Вверх
Sardar
Дата 19.2.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Black_leopard @  19.2.2007,  19:22 Найти цитируемый пост)
но возникла проблема с кодировкой

Какая проблема? Видим всё кракозябрами? Убедись что скрипт в той же кодировке, что и и сама страница, да сервер вместе с Content-type заголовком левый charset=xxx не отсылает, отдавая скрипт.

Цитата(Black_leopard @  19.2.2007,  19:22 Найти цитируемый пост)
почему-то данный код работает в Firefox и Opera, но не как не хочет работать в IE

Как это проявляется? Какие ошибки выскакивают?

А вообще научись задавать вопросы, подробно описывая суть smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
dstorm81
Дата 20.2.2007, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: 20
Всего: 39



итак по порядку.
во первых:
сохрани ВСЕ документы (php,js,css) в кодировке utf-8, абсолютно все, имхо это навсегда избавит тебя от гиммороя с кодировками.
во вторых:
все страницы должны иметь <meta http-equiv="content-type" content="text/html; charset=utf-8" />
в третьих:
все php страницы должны посылать заголовок header("Content-type:text/html;charset=utf-8");


смотри в лессон1
заголовок header("Content-Type: text/xml");, а где же кружка? smile где указание кодировки


--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
Black_leopard
Дата 21.2.2007, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Сделал все абсолютно как сказал dstorm81, но все равно приходит выводится в каких-то ироглифах: 
®СЂРёР№. РјС‹ еще РЅРµ знакомы!
PM MAIL   Вверх
Sardar
Дата 21.2.2007, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Black_leopard, это UTF-8, значит браузер читает сорцы в cp1251 или подобном. Такое возможно если сервер в Content-type заголовке указывает charset=<не UTF-8>. Посмотри заголовки, в мозилле любым плагином (WebDeveloper например), или telnet'ом сними страницу.
Будет проще если дашь ссылку.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1057 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.