Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Кодировка .load() (https://javascript.ru/forum/jquery/11430-kodirovka-load.html)

roma86 23.08.2010 16:06

Кодировка .load()
 
Здравствуйте. Есть скрипт на сервере text.php, который отдает html в кодировке win1251, есть страница на сайте, которая тоже в кодировке win1251. Скрипт jquery выглядит типа так
....

function() {
156 /* Подгружаем содержимое в селект (AJAX) */
157 var pointAjaxLink = jQuery(this).attr('href');
158 if ( pointAjaxLink != '#' ) {
159 jQuery(this).animate({frankySuperStar:jQuery(this).height()},200,function(){
160 jQuery('#activeAddress').load(pointAjaxLink);
161 });
162 }; 
....

т.е. в #activeAddress подгружается то что открывается c адреса в переменной pointAjaxLink. При этом, в опере и огнелисе кодировка меняется на utf-8 и на странице див с нужным классом и подгруженными данными получается в кракозяблах.
Подскажите, как их вставлять в win1251.
Заранее спасибо.

Positiv4eG 27.08.2010 20:03

В начале php скрипта который будет возвращать ответ нужно писать
header('Content-type: text/html; charset="windows-1251"');

Тогда скрипт будет знать что кодировка в ответе будет не UTF-8 a win1251 ;)

roma86 27.08.2010 23:21

Так как раз делал. Сайт построен на битрикс. Кэширование отключал. Короче поменял load() на get() эффект тот же. Причем странное дело - глюк срабатывает через раз. то в нужной кодировке отдает то нет. И не систематически, рандомно. может 10 раз отдать в кодировке utf-8, потом пять раз в нужной win1251, а может еще как-нибудь самопроизвольно. После замены на get() проблема появилась и в хроме. Такие дела. Побороть пока не удалось. Думают три программиста и вот вы подключились.

subzey 27.08.2010 23:31

Емнимс, в документации jQ где-то написано, что все аяксовые запросы работают исключительно в utf-8

Positiv4eG 28.08.2010 16:58

да не правда. У меня работает. попробуйте вот так:
$.ajax(
{
	type: "GET",
	cache: false,
	url: pointAjaxLink,
	data: "",
	success: function(data)
	{
		$('#activeAddress').html(data);
	}
});

roma86 28.08.2010 18:37

Здравствуйте, все! Спасибо всем кто участвовал. Переписал все используя .ajax(). использовал параметр cache: false (спасибо Positiv4eG) и указал кодировку в параметре contentType (хотя возможно зря, это ж в каком виде данные отправляются на сервер). Потом ублил весь кэш на сервере, все сессии, отключил кэширование. Глюк так и имел место быть.
Потом заметили, что у авторизованного пользователя такого не наблюдается. Проверили еще. Потом еще проверили. Короче потом сделали невидимую авторизацию для любого пользователя. Теперь все без глюков. Похоже на то что это какие-то замуты с кэшем битрикса. Пробовали снова, теперь и с .get() все работает. С .load() не пробовали, уже западло.
Все. Концерт окончен).

Kolyaj 29.08.2010 10:13

Цитата:

Сообщение от roma86
Короче потом сделали невидимую авторизацию для любого пользователя.

Вы мои кумиры.

roma86 29.08.2010 11:36

Kolyaj,
Смех смехом, а ковырять ошибки битрикс нет ни времени ни желания.


Часовой пояс GMT +3, время: 09:56.