Показать сообщение отдельно
  #1 (permalink)  
Старый 18.06.2012, 21:57
Vit Vit вне форума
Аспирант
Отправить личное сообщение для Vit Посмотреть профиль Найти все сообщения от Vit
 
Регистрация: 11.01.2012
Сообщений: 56

Привязка данных к объекту
Всем доброго. Есть задача - привязать некий набор данных, представляемый собой текст с кирилицей и латиницей к ячейкам таблицы.

Смысл в том, чтоб при кликах по ячейкам таблицы в некий DIV выводился привязанный к кликнутым ячеям текст.
На сервере делаю так:
Код:
'<td note="'+Переменка содержащая привязываемый текст+'">'+IntToStr(d)+'</td>';
(Сервер мной написаный)
Но браузер (FireFox) отображает это неверно, ибо в самом тексте могут присутствовать любые символы в том числе " скажем.

Первая мысль - кодировать текст, в то, что браузер не станет самостоятельно отображать. Например просто приводить текст в его HEX представление, а в JS наоборот раскодировать:
for(i=0;i<s.length;i+=2){
		 r+=String.fromCharCode(parseInt('0x'+s[i]+s[i+1]));
		};

Где s - строка с HEX значениями. Это работает, но выдает на страницу кракозяблики. (сама страница задана как content="text/html; charset=windows-1251"). Видимо раскодировка в UTF производится.

Отсюда первый вопрос: А как-то можно указать в какую кодировку переводить? Т.е. получить нормальную кириллицу?

Пока отложив это пробую следующий вариант:
Код:
'<td note="'+ URLEncode(Days[d].DayContent)+'">'+IntToStr(d)+'</td>'
А в скрипте клика соответственно:
s=me.getAttribute('note');
		...innerHTML=decodeURIComponent(s);

Где me - указывает на кликнутую ячейку.
Однако получаю ошибку
malformed URI sequence
И если честно пока нечетко понимаю что она означает.

Отсюда второй вопрос: Если делать так, то что это за ошибка, и как ее устранить?

И на последок Вопрос номер три: А как вообще стоит делать такие вещи? Страница должна стать автономной - все что нужно, должно быть заранее подгруженно в нее, а уже выборка соответственно содержимого, которое нужно вытянуть в данный момент времени по некому событию, должна управляться на стороне клиента. Т.е. абсолютно без лишнего запроса к серверу. Сервер дожен отработать один единственный раз, дальше вся работа должна лечь на клиента.
Ответить с цитированием