Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > AJAX и вызов метода ActionForm


Автор: oson 4.3.2006, 23:32
А можно ли в принципе реализовать такое.
На странице есть например <body onmouseover="timer(2000);">
где function timer(delay) { setTimeout("makeRequest('???')", delay);}
И эта функция должна сделать запрос метода ActionForm на сервере, прочитать
возвращаемое функцией значение true или false и если true, то перерисовать
определенную часть страницы БЕЗ ПЕРЕЗАГРУЗКИ.
То есть что должно быть в вызове makeRequest('???'), где
function makeRequest(url) { if (window.XMLHttpRequest)
{ http_request = new XMLHttpRequest();
........................................................
http_request.onreadystatechange =
function() { перерисовать на странице нужную часть};
http_request.open('GET', url, true); }
И можно ли вообще средствами AJAX не просто прочитать контент xml документа на сервере, а вызвать нужный метод в нужном бине и вернуть ответ?

Автор: 12345c 4.3.2006, 23:43
Цитата(oson @ 4.3.2006, 23:32 Найти цитируемый пост)
function() { перерисовать на странице нужную часть};

должна содержать чтение присланного ответа через http_request.responseText и вставить его как текст в свойство innerHTML той части страницы, которую обновляете. Связываться с responseXML можно, но возни больше - всё равно в общем случае придётся взять значение атрибута и посчитать его html-текстом, который вставите в страницу.

Автор: Sardar 5.3.2006, 00:04
oson, собсно gmail.com так и делает, только интервал дольше.

Цитата(12345c @ 4.3.2006, 22:43 Найти цитируемый пост)
всё равно в общем случае придётся взять значение атрибута и посчитать его html-текстом, который вставите в страницу.

Зачем так сложно, пользуемся XSLT, трансформируем в нужную вёрстку (DOM дерево), вставляем куда нужно. Чуть позже покажу пример, звиняюсь времени нет.

Любопытных отправляю http://www.devguru.com/Technologies/xmldom/quickref/node_transformNode.html. Xоть ИЕ как всегда реализует свои не стандартные методы, они всё таки удобней чем W3C'шные универсальные, потому в гугле ищем краткие скрипты реализаций selectNodes, selectSingleNode, transformNode и других. Да простят меня фанаты W3C за последний мой совет smile

Автор: oson 5.3.2006, 00:28
Цитата

Цитата(oson @ 4.3.2006, 23:32 )
function() { перерисовать на странице нужную часть};

должна содержать чтение присланного ответа через http_request.responseText и вставить его как текст в свойство innerHTML той части страницы, которую обновляете. Связываться с responseXML можно, но возни больше - всё равно в общем случае придётся взять значение атрибута и посчитать его html-текстом, который вставите в страницу.

Я не совсем понимаю. Ну есть у меня в скопе session например бин ActionForm како-нить с методом например boolean checkStatus(){ здесь делается запрос в базу напримери чтото проверяется}. То есть со страницы из JavaScript я должен сделать чтото типа
http_request.open('GET', url, true); где этот url должен вызвать метод checkStatus(). А потом
var xmldoc = http_request.responseXML;
var root_node = xmldoc.getElementsByTagName('root').item(0); - это из примера с xml документом. Но даже если я положу на ту же страницу
код <p id='callMethod'><%=checkStatus() %></p> я ж не смогу вызвать этот метод из JavaScripta как-то так
var root_node = xmldoc.getElementsById('callMethod')? Чтото я недопонимаю smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)