Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF and AJAX, примеры, хелп / 7 сообщений из 7, страница 1 из 1
04.05.2006, 20:25
    #33708308
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF and AJAX, примеры, хелп
JavaScript совсем не знаю :( нарыл такой пример

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
<html>
<head>

<script type='text/javascript'>

var req= null ;
var console= null ;
var READY_STATE_UNINITIALIZED= 0 ;
var READY_STATE_LOADING= 1 ;
var READY_STATE_LOADED= 2 ;
var READY_STATE_INTERACTIVE= 3 ;
var READY_STATE_COMPLETE= 4 ;

function loadXMLDoc(url) {
     if  (window.XMLHttpRequest) {
        req =  new  XMLHttpRequest();
    }  else   if  (window.ActiveXObject) {
        req =  new  ActiveXObject("Microsoft.XMLHTTP");
    }
     if  (req) {
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send( null );
    }

}

function processReqChange(){
  var ready=req.readyState;
  var data= null ;
   if  (ready==READY_STATE_COMPLETE){
    data=req.responseText;
  } else {
    data="loading...["+ready+"]";
  }
  toConsole(data);
}


function toConsole(data){
   if  (console!= null ){
    var newline=document.createElement("div");
    console.appendChild(newline);
    var txt=document.createTextNode(data);
    newline.appendChild(txt);
  }
}

window.onload=function(){
  console=document.getElementById('console');
  loadXMLDoc("data.txt");
}
</script>

</head>
<body>
<div id='console'></div>
</body>
</html>




более менее все понятно, но как изменить этот пример, чтобы он соответствовал слудующим требованиям:

- window.onload=function() - вместо этого, нужно чтобы запрос посылался каким-либо таймером, т.к. JSF компанент должен автоматически обновлятся через указанный промежуток времени

- нужно посылать запрос POST и главное, нужно еще как-то передать все параметры(скрытые поля и т.д.) формы, в которой находится компанент. Иначе faces servlet ничего не поймет.

- сам компанент предстовляет из себя таблицу, после каждого обновления, если на сервере появились новые данные, должны добавлятся строки к этой таблице.


И еще, может кто даст ссылку на пример JSF AJAX компанента, только не посылайте к ADF Faces или MyFaces, там с ходу не разобратся.
...
Рейтинг: 0 / 0
05.05.2006, 07:42
    #33708737
pretender
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF and AJAX, примеры, хелп
1) Таймаут можно сделать примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
window.onload=function(){
// по тамеру будет вызывать функцию load() 
   window.setTimeout(‘load();’,  50 );
}

function load(){
  console=document.getElementById('console');
  loadXMLDoc("data.txt");
}
2) Отправка данных постом (модифицируем Вашу функцию немного):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
function loadXMLDoc(url) {
     if  (window.XMLHttpRequest) {
        req =  new  XMLHttpRequest();
    }  else   if  (window.ActiveXObject) {
        req =  new  ActiveXObject("Microsoft.XMLHTTP");
    }
     if  (req) {
      req.onreadystatechange = processReqChange;

      // говорим, что используем post 
      req.open("POST", url, true);

      // устанавливаем контент-тайп
      req.setRequestHeader("Content-Type",
		"application/x-www-form-urlencoded");

      // параметры запроса (те самые поля формы)
      var params = "action=add& item=item”;

      // посылаем параметры
      req.send(params);
    }	
}
должно cработать.
Если не получится пишите...

3)К сожалению, с JSF пока не работаю, но есть примеры, скажем, для Tapestry.
...
Рейтинг: 0 / 0
05.05.2006, 10:39
    #33709192
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF and AJAX, примеры, хелп
спасибо.

почемуто не срабатывает таймер, при первой загрузке страницы или при обновлении запрос посылается, а далее нет. Браузер файрфокс.
...
Рейтинг: 0 / 0
05.05.2006, 10:56
    #33709278
pretender
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF and AJAX, примеры, хелп
Сори. А если так попробовать?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
window.onload=function(){
  load();   
}

function load(){
  console=document.getElementById('console');
  loadXMLDoc("data.txt");

// по тамеру будет вызывать функцию load() снова и снова 
  setTimeout('load();',  50 );
}
...
Рейтинг: 0 / 0
05.05.2006, 11:04
    #33709314
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF and AJAX, примеры, хелп
спасибо, сейчас попробую.

а не подскажешь, как сделать следующее: ответом на мой запрос будет <table>...</table>, вобщем новая таблица, как мне удалить старую и за место нее поместить новую, id старой таблиции известен.
...
Рейтинг: 0 / 0
05.05.2006, 11:07
    #33709324
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF and AJAX, примеры, хелп
таймер заработал
...
Рейтинг: 0 / 0
05.05.2006, 11:18
    #33709392
pretender
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF and AJAX, примеры, хелп
По-моему надо еще и парента знать для этого. По крайней мере я с ИД парента тоже храню для этого.

Так вот если нам ИД элемента и его парента известны, то можно сделать примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
    var element = document.getElementById(elementId);
    var parent = document.getElementById(parentId);

     if  (element !=  null  && parent!= null ) {
            parent.removeChild(element);
    }

Ну а потом по новой вставляйте таблицу в того же парента appendChild()-ом. Вроде должно работать...

(хотя это больше по javascript вопрос, чем по java...)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF and AJAX, примеры, хелп / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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