Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Отображение зарезервированных символов в Ajax / 1 сообщений из 1, страница 1 из 1
25.10.2007, 07:03
    #34893110
324f4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение зарезервированных символов в Ajax
Добррого времени суток! Проблема возникла такая.
Для вывода некоторых данных использую технологию Ajax.
Серверная чать - сервлет, который формирует некий запрос к БД.
На выход для клиента формируется XML-файл вида

Код: plaintext
1.
2.
3.
4.
<root>
<index> 2 </index>
<list>gawgaw</list>
<list>uuu!</list>
</root>
Где узел <index> - количество элементов, которые извлекли из БД. В данном случае мы извлекли из БД две записи "gawgaw" и "uuu!".
На сервере xml-файл формируется следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
......................
private String getXMLData(String[] data) {
		String xmlString = "";
		xmlString = xmlString + "<root>";
		xmlString = xmlString + "<index>" + data.length + "</index>";
		for (int i =  0 ; i < data.length; i++) {
		
			xmlString = xmlString + "<list>" + com.documentum.web.util.SafeHTMLString.escapeText(data[i]) + "</list>"; //преобразование символов
	System.out.println(xmlString);
			}
		xmlString = xmlString + "</root>";

		return xmlString;
	} 
 .....
Где
Код: plaintext
 com.documentum.web.util.SafeHTMLString.escapeText(data[i]) + "</list>"; 
- преобразование зарезервированных символов вида <,> и пр. к виду & lt; & gt
То есть, например, если в БД находятся символы:
Код: plaintext
1.
!#&<>*
<>
То на выходе получается xml-файл вида:
Код: plaintext
1.
2.
3.
4.
<root>
<index> 2 </index>
<list>!#& amp;& lt;& gt;</list> 
<list>< ></list>
</root>
То есть зарезервированные символы заменяются своим эквивалентом типа "& lt", "& gt".
Код: plaintext
Примечание: здесь я специально поставил пробелы в символах после &, так как на данном форуме они автоматически преобразуются в зарезервированные символы))

На клиенте xml-файл разбирается так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
//отлавливаем узел index с его значением:
var indexObj = req.responseXML.getElementsByTagName("index")[ 0 ]; //отлавливаем узел index
var index = indexObj.childNodes[ 0 ].nodeValue; //отлавливаем значение узла index
...........................
if (index!= 0 )
{
temp = "<select id=\"Berk\" name=\"list\" onclick=\"onclicks()\" size="+ind+">";
for (var i= 0 ; i<index; i++) //пробегаем по элементам list
{
var listObj = req.responseXML.getElementsByTagName("list")[i]; //получаем i-й узел list
if (listObj.childNodes[ 0 ]!=null)
{
// здесь отлавливаем значение узла list
temp = temp + "<option value=" +i+">" + listObj.childNodes[ 0 ].nodeValue + "</option>";
}
}

temp = temp + "</select>";
........
То есть формируется список select, который затем прикручивается к тегу div,
Код: plaintext
list.innerHTML = temp;

и отображается у соотвествующего тега <text>

Проблема в том, что когда я ввожу какой-либо специальный символ, например ">", то список <select> у меня появляется так сказать "через раз". Причем никаких сообщений об ошибках скрипт не выводит. Уже делал проверки на alert() на заполнение listObj.childNodes[0].nodeValue.
Все в порядке, но выпадающий список не появляется.
Если сталкивались с подобной проблемой, то подскажите, как ее решить.
Заранее благодарен!
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Отображение зарезервированных символов в Ajax / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]