 
			
				21.09.2010, 14:50
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.06.2009 
					
					
					
						Сообщений: 117
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				сделать более универсальным ajax-вывод
			 
			
		
		
		
		Здравствуйте. Есть JS скрипт: 
<script type="text/javascript"> 
// Функция, осуществляющая AJAX запрос 
function loadXMLDoc(method, url) { 
  if(window.XMLHttpRequest) { 
    req = new XMLHttpRequest(); 
    req.onreadystatechange = processReqChange; 
    req.open(method, url, true); 
    req.send(null); 
  } else if (window.ActiveXObject) { 
    req = new ActiveXObject("Microsoft.XMLHTTP"); 
    req.onreadystatechange = processReqChange; 
    req.open(method, url, true); 
    req.send(); 
  } 
} 
// Функция, выполняемая при изменении статуса 
// запроса, если статус  равен 200, данные получены 
function processReqChange() { 
  if(req.readyState == 4) { 
    if(req.status == 200) { 
      getNumber(req.responseText); 
    } else { 
      alert("There was a problem retrieving the XML data:\n" + req.statusText); 
    } 
  } 
} 
// Функция выполняется при щелчке на "ссылке" 
function onClick(prurl) { 
    var url = prurl; 
    loadXMLDoc( "get", url ); 
} 
// Функция записывает в элемент content значение, полученное от сервера 
function getNumber( number ) { 
  var content = document.getElementById( "content" ); 
  content.innerHTML = number;  
} 
</script>
Работает например так:
 
<a href="#" onClick="onClick('ajax.php?num=1')">ссылка1</a><br>
<div id="content"></div>
Как сделать вывод более универсальным, т.е. чтоб в ссылке можно было указать id элемента в который выводить полученые данные, т.е. можно было использовать выбвод в неограниченое число разных блоков соответствующими ссылками?  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				21.09.2010, 21:17
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.06.2009 
					
					
					
						Сообщений: 117
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Ну то есть надо чтобы можно было задавать в onClick дополнительный параметр - id элемента вывода, что позволило бы многократно использовать вывод в разные блоки на одной странице. 
Типо такого:
 
<a href="#" onClick="onClick('ajax.php?num=3', 'content')>ссылка1</a>
Только как протащить дополнительный параметр функции onClick через весь скрипт?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				22.09.2010, 04:33
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 21.01.2010 
					
					
					
						Сообщений: 1,022
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
<script type="text/javascript"> 
// Функция, осуществляющая AJAX запрос 
function loadXMLDoc(method, url, target) { 
  if(window.XMLHttpRequest) { 
    req = new XMLHttpRequest(); 
    req.onreadystatechange = processReqChange; 
    req.open(method, url, true); 
    req.send(null); 
  } else if (window.ActiveXObject) { 
    req = new ActiveXObject("Microsoft.XMLHTTP"); 
    req.onreadystatechange = processReqChange; 
    req.open(method, url, true); 
    req.send(); 
  } 
} 
// Функция, выполняемая при изменении статуса 
// запроса, если статус  равен 200, данные получены 
function processReqChange() { 
  if(req.readyState == 4) { 
    if(req.status == 200) { 
      getNumber(req.responseText, target); 
    } else { 
      alert("There was a problem retrieving the XML data:\n" + req.statusText); 
    } 
  } 
} 
// Функция выполняется при щелчке на "ссылке" 
function onClick(prurl, target) { 
    var url = prurl; 
    loadXMLDoc( "get", url, target ); 
} 
// Функция записывает в элемент content значение, полученное от сервера 
function getNumber( number, target ) { 
  var content = document.getElementById( target || "content" ); 
  content.innerHTML = number;  
} 
</script>
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				22.09.2010, 06:50
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.06.2009 
					
					
					
						Сообщений: 117
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Я пробовал так делать - не получилось. И ваш вариант тоже не работает - ничего не происходит. 
Вызываю так:
 
<a href='#' onClick="onClick('ajax.php?num=3', 'content')">ссылка</a><br>
<div id="content"></div>
Что не так?
 
Может дело в этой строке(повторяется дважды):
 
req.onreadystatechange = processReqChange;
 
так понимаю тут переменной присваивается результат выполнения функции, а параметр не передается?  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось LRCenter, 22.09.2010 в 06:54.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				22.09.2010, 17:03
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.07.2010 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 через глобальную переменную 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				22.09.2010, 18:47
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.06.2009 
					
					
					
						Сообщений: 117
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от aH6y
			 
		
	 | 
 
	| 
		через глобальную переменную
	 | 
 
	
 
 А как в JS задать голбальную? 
global var - я так понимаю не работает - этож не php. 
А если просто задать вне функции, то не сработает, потому что обработка идет через функции, а они в коде страницы заданы раньше чем обращение к ним.
 
Как быть то?  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось LRCenter, 22.09.2010 в 19:06.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				22.09.2010, 21:39
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.06.2009 
					
					
					
						Сообщений: 117
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Разобрался с глобальныим переменными. Ввел функцию объявляющую глобальную переменную имени блока. 
Рабочий пример, если кому надо. Кстати на этом можно по сути покрыть 90% всех потребностей в ajaxe, или я не прав?
 
<script type="text/javascript"> 
function vargo(blid) {blidf = blid;}
// Функция, осуществляющая AJAX запрос 
function loadXMLDoc(method, url) { 
  if(window.XMLHttpRequest) { 
    req = new XMLHttpRequest(); 
    req.onreadystatechange = processReqChange; 
    req.open(method, url, true); 
    req.send(null); 
  } else if (window.ActiveXObject) { 
    req = new ActiveXObject("Microsoft.XMLHTTP"); 
    req.onreadystatechange = processReqChange; 
    req.open(method, url, true); 
    req.send(); 
  } 
} 
// Функция, выполняемая при изменении статуса 
// запроса, если статус  равен 200, данные получены 
function processReqChange() { 
  if(req.readyState == 4) { 
    if(req.status == 200) { 
      getNumber(req.responseText); 
    } else { 
      alert("There was a problem retrieving the XML data:\n" + req.statusText); 
    } 
  } 
} 
// Функция выполняется при щелчке на "ссылке" 
function urlbgo(prurl) { 
    var url = prurl; 
    loadXMLDoc( "get", url ); 
} 
// Функция записывает в элемент content значение, полученное от сервера 
function getNumber( number ) { 
  var content = document.getElementById(blidf); 
  content.innerHTML = number;  
} 
</script> 
<span style="color:blue; text-decoration:underline; cursor:pointer" onClick="urlbgo('ajax.php?num=3'); vargo('asd');">ссылка 1</span><br>
<span style="color:blue; text-decoration:underline; cursor:pointer" onClick="urlbgo('ajax.php?num=2'); vargo('asd2');">ссылка 2</span><br>
<span style="color:blue; text-decoration:underline; cursor:pointer" onClick="urlbgo('ajax.php?num=1'); vargo('asd3');">ссылка 3</span><br>
<span id="asd">.</span> | <span id="asd2">.</span> | <span id="asd3">.</span>
exec,   aH6y, спасибо за помощь и советы.  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.11.2010, 08:49
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.06.2009 
					
					
					
						Сообщений: 117
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Все супер, только вот как бы так сделать что-бы в процессе загрузки\перезагрузки блока в него выводился индикатор ожидания, например просто текст "Ждите..."? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.11.2010, 13:12
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.06.2009 
					
					
					
						Сообщений: 117
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Разобрался. Вставил  
var content = document.getElementById(blidf);
content.innerHTML = "Ждите...";
 
После
 
if(window.XMLHttpRequest){
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.11.2010, 22:30
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.06.2009 
					
					
					
						Сообщений: 117
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Подскажите что изменить в скрипте чтобы можно было отправлять данные форм. Понятно что "get" на "post" поменять, а в какую переменную сами данные формы пристроить? Непонятно.. объясните. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |