Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2011, 17:57   #1
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию Кодировка в Ajax

Всем доброго времени.
Подскажите пожалуйста как заставить XMLHttpRequest принимать данные с сервера в нужной мне кодировке (win-1251 если точнее)
Сама страница у меня
Код HTML:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
Когда я обновляю внутренности объекта
Код:
d.innerHTML+=j.responseText;
Русские буквы превращаются в кракозяблики.
Я читал что:
Цитата:
Все идущие на сервер параметры GET/POST, кроме случая multipart/form-data, кодируются в UTF-8. Не в кодировке страницы, а именно в UTF-8.
Цитата:
С другой стороны, ответ с сервера браузер воспринимает именно в той кодировке, которая указана в заголовке ответа Content-Type.
Однако попытки передать кодировку
Код:
ResponseInfo.Headers.Add('Content-Type: text/html; charset=windows-1251');
Не дают ничего (сервер на INDI).

Как выйти из этой ситуации? Не хочется делать перезагруз всей страницы, потому что данные собираются из разных баз на очень далеко удаленных хостах - время экономлю.
А так запросил только ту часть которая нужна и обновил DIV какой-ить, где эти данные нужны.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2011, 18:11   #2
ZvEr_HaCkEr
VisualC++/DirectX
Форумчанин
 
Аватар для ZvEr_HaCkEr
 
Регистрация: 16.07.2010
Сообщений: 831
По умолчанию

Почитайте..
ZvEr_HaCkEr вне форума Ответить с цитированием
Старый 19.11.2011, 19:11   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А для того, чтобы сервер отдавал яваскрипту JSON (или что там у вас) в правильной кодировке (т.е. в такой же кодировке, в которой отдаются все xhtml страницы) просто в начале вашего ajax.php пропишите заголовок:

header('Content-type: text/html; charset=windows-1251');
Дык это и пытаюсь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2011, 19:41   #4
ZvEr_HaCkEr
VisualC++/DirectX
Форумчанин
 
Аватар для ZvEr_HaCkEr
 
Регистрация: 16.07.2010
Сообщений: 831
По умолчанию

А если поставить charset=utf-8?
ZvEr_HaCkEr вне форума Ответить с цитированием
Старый 19.11.2011, 21:39   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Та же ерунда
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2011, 22:03   #6
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

http://programmersforum.ru/showpost....06&postcount=8
Lesha вне форума Ответить с цитированием
Старый 19.11.2011, 22:41   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Леша, у меня не jQuery
Код:
   j.open("GET","/MyDoc?host="+h,true);
   j.onreadystatechange = function() {
       if (j.readyState == 4)  {
  	   	var obj = me.parentNode;
  	   	if (obj) {
  	     if(j.responseText!=""){
			 var d=document.getElementById('content');
			 if(d){
				 d.innerHTML+=j.responseText;
			 }
		 }
  	   	};
       };
   };
   j.send(null);
Где j - созданный XMLHttpRequest. Я ж так понимаю что encodeURIComponent чсто для jQuery, или нет?

Или я легко могу этот метод использовать, передав ему responseText?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2011, 23:28   #8
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

Код:
function createXMLHttp(){
if(typeof XMLHttpRequest != "undefined") { // для браузеров аля Mozilla
return new XMLHttpRequest();
} else if(window.ActiveXObject) { // для Internet Explorer (all versions) 
var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
for (var i = 0; i < aVersions.length; i++) {
try {var oXmlHttp = new ActiveXObject(aVersions[i]);return oXmlHttp;} catch (oError) {}}throw new Error("Невозможно создать объект XMLHttp.");
}}
//get ajax
function getAjax(adr,callbak) { //none
var oXmlHttp = createXMLHttp();
oXmlHttp.open("GET", adr, true);
oXmlHttp.setRequestHeader("Content-Type", "text/html; charset=windows-1251");
oXmlHttp.onreadystatechange = function(){
	if(oXmlHttp.readyState == 4) {
		if(oXmlHttp.status == 200) { 
			if (callbak!='none') { callbak(oXmlHttp.responseText); }
		}
	} else {
		if (callbak!='none') {
			callbak('error'+oXmlHttp.statusText);
		}
	}
};
oXmlHttp.send(null);
}
Lesha вне форума Ответить с цитированием
Старый 19.11.2011, 23:40   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
   j.open("GET","/MyDoc?host="+h,true);
   j.setRequestHeader("Content-Type", "text/html; charset=windows-1251");
   j.onreadystatechange = function() {
       if (j.readyState == 4)  {
  	   	var obj = me.parentNode;
  	   	if (obj) {
  	     if(j.responseText!=""){
			 var d=document.getElementById('content');
			 if(d){
				 d.innerHTML+=j.responseText;
			 }
		 }
  	   	};
       };
   };
   j.send(null);
Правильно понял?
Если да то результат то же.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2011, 23:42   #10
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

а сервер вам в windows-1251 выдает?

если нет то надо настраивать сервер а не химичить в JavaScript
Lesha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
слетает кодировка при AJAX-запросе Seran4ek PHP 3 16.10.2011 22:39
AJAX Mortimoro HTML и CSS 0 13.01.2011 18:52
AJAX prizrak1390 Свободное общение 10 08.06.2010 16:01
AJAX Namolem Помощь студентам 1 08.02.2010 22:40
ajax кодировка Iuliy JavaScript, Ajax 1 07.03.2008 19:38