Эта тема на forum.dklab.ru


mus: Вопрос спецам - почему responseText не возвращает спецсимволы?
Господа, имеется след. проблема.
Использую фреймворк для Ajax под названием Sajax. Задача - осуществить выборку из базы и внести результат в выпадающий список средствами Ajax. Все нормально работает, кроме вывода спецсимволов, как то - немецких умляутов (ä, ö и т.д.).

Приведу пример из исходника, дабы подвести к нужной мысли.



x.open(sajax_request_type, unescape(uri), true);
//window.open(unescape(uri));

sajax_requests[sajax_requests.length] = x;

x.onreadystatechange = function() {

if (x.readyState != 4)
return;

sajax_debug("received " + x.responseText);

var status;
var data;
var txt = x.responseText.replace(/^\s*|\s*$/g,"");
// и т.д.


Если раскомментировать строчку window.open(unescape(url));, то на экране появляется страничка с, как я понял, полученным результатом. Там все спецсимволы правильно отображаются. А вот метод x.responseText уже возвращает вместо умляута знак вопроса. Такое ощущение, что метод не поддерживает спецсимволы. Или просто не заточен под это...

Может кто помочь разобраться?
WingedFox:
mus
Смотрите, что там делают с кодировками. Обычно такая проблема возникает при некорректных преобразованиях.
mus:
WingedFox

Там, вроде, никакой работы с кодировками-то и нет. Есть замена 5 символов, не более...
WingedFox, не могли бы Вы мне помочь разобраться в проблеме этого фреймворка? Я думаю, с Вашим опытом достаточно будет просто пробежаться глазами по коду скрипта. Естественно, за деньги.
WingedFox:
mus
Врядли у меня будет столько свободного времени, чтобы дебажить эту библиотеку.

Посмотрите, какие заголовки бегают от сервера сравните кодировки, попробуйте открыть урл в браузере и посмотреть, что реально там возвращается. Посмотрите, что лежит в логе sajax.

В конце концов, возьмите firebug и поставьте брекпоинт в интересующих местах, чтобы увидеть, где именно ломается текст.
mus:
Я взял JsHttpRequest, всё-таки Kотеров молодчина! С его библиотекой все работает на 5+!

Эта тема на forum.dklab.ru