powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / AJAX request.open("GET", url,... не происходит запрос к серверу.
8 сообщений из 8, страница 1 из 1
AJAX request.open("GET", url,... не происходит запрос к серверу.
    #33705811
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой 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.
script1.js:
function retrieveURL(url){
	var req;
	req=new ActiveXObject("Microsoft.XMLHTTP");
	if(req){
		req.onreadystatechange=processStateChange;
		req.open("GET", url, true);
		req.send();
	}
}
function processStateChange(){
	if(req.readyState== 4 ){ // Complete
		if(req.status== 200 ){ // OK response
			alert("Ajax response:"+req.responseText);
		} else{
			alert("Problem with server response:\n "+req.statusText);
		}
	}
}

и html страничка:
<html>
	<body>
		<script>
			window.onload=function(){
				retrieveURL('/ctx/showProgress.do');
				setTimeout('window.onload()',  1000 );
			}
		</script>
	</body>
</html>

Почему при вызове retrieveURL() реальный запрос на стратсовый экшн проходит только один раз, а все остальные запросы как будто берутся из кэша?
...
Рейтинг: 0 / 0
AJAX request.open("GET", url,... не происходит запрос к серверу.
    #33705821
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, в хтмл страничке конечно есть строка включения script1.js
...
Рейтинг: 0 / 0
AJAX request.open("GET", url,... не происходит запрос к серверу.
    #33705850
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как у тя все... не полюцки. попробуй использовать prototype.js

брать можно тут: http://script.aculo.us/downloads (там просто в поставке идет последняя версия прототайпа)

AJAX Tutorial with Prototype

и вообще, использование прототайпа сэкономит кучу времени.

--
бес потпеси, потому што раз троганъ
...
Рейтинг: 0 / 0
AJAX request.open("GET", url,... не происходит запрос к серверу.
    #33705864
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:). Ща попробую.
А ваще - что не правильно в коде?
...
Рейтинг: 0 / 0
AJAX request.open("GET", url,... не происходит запрос к серверу.
    #33705942
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<html>
	<body>
		<script>
			var i= 0 ;
			window.onload=function(){
				retrieveURL('/ctx/showProgress.do?i='+i);
				i++;
				setTimeout('window.onload()',  1000 );
			}
		</script>
	</body>
</html>
ну и что, что криво? Зато в кэш не лезет!
...
Рейтинг: 0 / 0
AJAX request.open("GET", url,... не происходит запрос к серверу.
    #33708700
AciD_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rimanПочему при вызове retrieveURL() реальный запрос на стратсовый экшн проходит только один раз, а все остальные запросы как будто берутся из кэша?
попробуй использовать метод POST

Код: plaintext
1.
2.
3.
...
req.open("POST", url, true);
...
...
Рейтинг: 0 / 0
AJAX request.open("GET", url,... не происходит запрос к серверу.
    #33708723
pretender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предложенные методы (добавление параметра в строку урла или отправка запроса постом) призваны обойти браузерное кэширование. Мне кажется можно настроить Ваш экнш так, чтобы он явным образом запрещал браузеру кэшировать свой урл. Т.е. чтобы он дописывал в респонс хеадер: HttpServletResponse.setHeader( "Cache-Control", "no-store, no-cache, must-revalidate" ).

Можно кстати сделать фильтр, который будет добавлять этот хеадер во все респонсы Вашего приложения.

Например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 import  javax.servlet.Filter;
 import  javax.servlet.FilterChain;
 import  javax.servlet.FilterConfig;
 import  javax.servlet.ServletException;
 import  javax.servlet.ServletRequest;
 import  javax.servlet.ServletResponse;
 import  javax.servlet.http.HttpServletResponse;
 import  javax.servlet.http.HttpServletRequest;
 import  java.io.IOException;

 public   class  CacheFilter  implements  Filter
{    
     public   void  init( FilterConfig filterConfig )  throws  ServletException {}

     public   void  doFilter( ServletRequest request, ServletResponse response, FilterChain filterChain ) 
 throws  IOException, ServletException
    {
        ((HttpServletResponse) response ).setHeader( "Cache-Control", "no-store, no-cache, must-revalidate" );
        filterChain.doFilter( request, response );
    }

     public   void  destroy() {}
} 

Это должно избавить Вас от кэширования урлов на уровне приложения. Мы уже много раз на грабли с кэшированием наступали. Попробуйте должно помочь. Не забудьте настроить фильтр в web.xml.
...
Рейтинг: 0 / 0
AJAX request.open("GET", url,... не происходит запрос к серверу.
    #33709375
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Спасибо. Через фильтр действительно лучше.
Раньше у меня стояло в жспхах:
Код: plaintext
1.
2.
3.
4.
		<META http-equiv="Content-Type" content="text/html;charset=UTF-8">
		<META http-equiv="Pragma" content="no-cache">
		<META http-equiv="Expires" content="-1">
		<META http-equiv="Content-Style-Type" content="text/css">

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


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