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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> AJAX и XML, проблема с русскими символами 
:(
    Опции темы
The_Aleksey
Дата 30.9.2008, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


<?php
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.10.2007
Где: Москва

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



Приветствую всех!
Недавно занялся освоением ajax и столкнулся с такой проблемой.
Код ajax:
Код

var XMLHttp=getXMLHttp();

function load()
{   
   var naimenovanie=document.getElementById("jNaimenovanie");
   var element=naimenovanie.options[naimenovanie.selectedIndex].value;   
   var url="test.php?naimenovanie="+element;
   XMLHttp.open("GET", url, true);
   XMLHttp.onreadystatechange=returned_data;
   XMLHttp.send(null);   
}

function getXMLHttp() 
{
   var XMLHttp=null;
   if(window.XMLHttpRequest) 
   {
      try { XMLHttp=new XMLHttpRequest(); } 
      catch(e) { }
   } 
   else if(window.ActiveXObject) 
   {
      try { XMLHttp=new ActiveXObject("Msxml2.XMLHTTP"); } 
      catch(e) 
      {
         try { XMLHttp=new ActiveXObject("Microsoft.XMLHTTP"); } 
         catch(e) { }
      }
   }
   return XMLHttp;
}

function returned_data()
{
   if(XMLHttp.readyState==4) 
   {
      var xml=XMLHttp.responseXML;      
      var element=xml.getElementsByTagName("element");
      var str="";
      for (var i=0; i<element.length; i++) 
      {
         var value=element[i].getAttribute("value");
         var name;
         for (var j=0; j<element[i].childNodes.length; j++) 
         {
            if(element[i].childNodes[j].nodeName=="name") 
               name=element[i].childNodes[j].firstChild.nodeValue;
         }
         str=str+" value="+value+" name="+name;
      }
      alert(XMLHttp.responseText);
      alert("Data: "+str);   
   }
}


файл test.php пока параметры не обрабатывает, а просто выдает:
Код

<?
header("Content-type: text/xml; charset=windows-1251");
echo '<data><element value="all"><name>-- Все --</name></element><element value="2006"><name>first</name></element><element value="2007"><name>second</name></element><element value="2008"><name>third</name></element></data>';
?>


А вопрос такой. В случае, когда в тегах <name></name> нет русских символов, xml отлично парсится, а если появляется, как здесь "Все", то на выходе не выдает ничего. Что нужно сделать, чтобы получать обратно из xml русские символы?
PM MAIL   Вверх
Sanchezzz
  Дата 30.9.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

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



вы наверное в курсе что ajax работает в utf-8? отправляет/принемает.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
The_Aleksey
Дата 30.9.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


<?php
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.10.2007
Где: Москва

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



Цитата

вы наверное в курсе что ajax работает в utf-8? отправляет/принемает.


Не был в курсе. Поменял в test.php charset на utf-8, никаких изменений. Что еще нужно изменить?
PM MAIL   Вверх
dmitryk1
Дата 12.10.2008, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 10.6.2008
Где: Новосибирск

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



Цитата(Sanchezzz @ 30.9.2008,  11:21)
вы наверное в курсе что ajax работает в utf-8? отправляет/принемает.

ничего подобного. отправляю json с русскими буквами и текст прекрасно выводится в cp1251. 

проблема в чём-то другом.

The_Aleksey, а попробовать в отладчике по шагам посмотреть и выяснить на какой строке что не получается не пробовал?

Это сообщение отредактировал(а) dmitryk1 - 12.10.2008, 11:15
PM MAIL GTalk Jabber   Вверх
bars80080
Дата 12.10.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



нет, скорее всё же проблема кодировок. возможно всё же символы из test.php отправляются не в utf-8. это надо очень точно отследить

надо дебаггером посмотреть вообще что приходит на конкретный запрос
PM MAIL WWW   Вверх
ksnk
Дата 12.10.2008, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата

Поменял в test.php charset на utf-8, никаких изменений. Что еще нужно изменить? 

А сам текcт остался в кодировке сp1251? 

dmitryk1, Не все в этом мире поддается логическому осмыслению smile
Microsoft.XMLHTTP работает с xml только в utf-8



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
dmitryk1
Дата 12.10.2008, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 10.6.2008
Где: Новосибирск

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



Цитата(ksnk @ 12.10.2008,  12:56)


dmitryk1, Не все в этом мире поддается логическому осмыслению smile
Microsoft.XMLHTTP работает с xml только в utf-8

интересно. получается что AJAX в IE сможет работать только в utf-8, а всё остальное выводить ввиде крокозябликов?

И если я передам в cp1251 строку, то её ничто не раскодирует? Но как тогда работает мой скрипт, который и просто в броузере отображается по русски и принимается с помощью JQUERY абсолютно нормально. И utf-8 я не использую. 

Вообще интересно, откуда такие данные? Специально на мсдн ща смотрел. Там список утфных кодировок (8 и 16)  и описаны они как используемые по умолчанию, однако, я так понял, ничто не мешает использовать и любую другую. Вплоть до того, что потом перекодировать её скриптом на странице...
PM MAIL GTalk Jabber   Вверх
bars80080
Дата 12.10.2008, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



dmitryk1, а ты во всех браузерах проверял?
PM MAIL WWW   Вверх
ksnk
Дата 12.10.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата

Microsoft.XMLHTTP работает с xml

В этой фразе все слова важны smile 
Принятый с сервера ответ responseText прекрасно отработает с любой корректно выставленной кодировкой, а вот responseXML - только в утф...  Умом я это тоже понять не мог, только запомнить... smile


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
dmitryk1
Дата 13.10.2008, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 10.6.2008
Где: Новосибирск

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



Цитата(ksnk @ 12.10.2008,  20:26)
Цитата

Microsoft.XMLHTTP работает с xml

В этой фразе все слова важны smile 
Принятый с сервера ответ responseText прекрасно отработает с любой корректно выставленной кодировкой, а вот responseXML - только в утф...  Умом я это тоже понять не мог, только запомнить... smile

Хм... Понятно. Запомню, как столкнусь с такой проблемой, буду знать откуда ноги растут.

А столкнусь точно, потому как с УТФ не работаю.

Проверял только в ие и хроме. Файерфоксами и операми не пользуюсь.
PM MAIL GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




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


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

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