Всем доброго. Есть задача - привязать некий набор данных, представляемый собой текст с кирилицей и латиницей к ячейкам таблицы.
Смысл в том, чтоб при кликах по ячейкам таблицы в некий 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
И если честно пока нечетко понимаю что она означает.
Отсюда
второй вопрос: Если делать так, то что это за ошибка, и как ее устранить?
И на последок
Вопрос номер три: А как вообще стоит делать такие вещи? Страница должна стать автономной - все что нужно, должно быть заранее подгруженно в нее, а уже выборка соответственно содержимого, которое нужно вытянуть в данный момент времени по некому событию, должна управляться на стороне клиента. Т.е. абсолютно без лишнего запроса к серверу. Сервер дожен отработать один единственный раз, дальше вся работа должна лечь на клиента.