MapServer и JavaScript

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Аватара пользователя
arzobispo
Активный участник
Сообщения: 230
Зарегистрирован: 10 сен 2008, 10:28
Репутация: 3
Контактная информация:

MapServer и JavaScript

Сообщение arzobispo » 17 май 2009, 18:03

Всем привет!
У меня такая проблема, написал JS который делает зависимыми выпадающие списки Select, т.е. список второй зависит от первого, все вроде работает, но вот МапСервер ругается, говорит, что переменная не определена (loadMap(): Web application error. CGI variable "map" is not set. ).

Что надо исправить или дописать, чтобы начало работать?

Для сравнения приведу два кода с html странички, на одной странице обычные select'ы (все работает и на псевдо-карте отображается), а на второй с использованием JS.
Первая:

Код: Выделить всё

<html>
<head>
<title>Proba</title>
</head>
<body>
<!-- ОПИСАНИЕ MAPSERVER-ФОРМЫ -->
<form name="mapserv" method="GET" action="/cgi-bin/mapserv.exe">
   <input type="hidden" name="map" value="[map]">
   <div align="left">Овощи</div>
   <select name ="group" size=1>
   <option value='' selected></option>
   <option value='Грибы'>Грибы</option>
   <option value='Ягода'>Ягода</option>
   <option value='Хвосты'>Хвосты</option>
   <option value='Нитки'>Нитки</option>
   <option value='Картофель'>Картофель</option>
   <option value='Шкурки'>Шкурки</option>
   <option value='Буратино'>Буратино</option>
   </select><br><br>
   <div align="left">Дачный поселок</div>
   <select name ="imfm" size=1>
   <option value='' selected></option>
   <option value='Баранкино'>Баранкино</option>
   <option value='Гадюкино'>Гадюкино</option>
   <option value='Ужиково'>Ужиково</option>
   <option value='Южный'>Южный</option>
   <option value='Северный'>Северный</option>
   <option value='Тарасовка'>Тарасовка</option>
   <option value='Тряпкино'>Тряпкино</option>
   </select><br><br>
   <div align="left">Садоводы</div>
   <select name ="im" size=1>
   <option value='' selected></option>
   <option value='Давыдович'>Давыдович</option>
   <option value='Зиборова'>Зиборова</option>
   <option value='Сандлер'>Сандлер</option>
   <option value='Кочанова'>Кочанова</option>
   <option value='Свободина'>Свободина</option>
   <option value='Келлер'>Келлер</option>
   <option value='Щербакова'>Щербакова</option>
   </select><br><br>
   <div align="left">Общество</div>
   <select name ="imtc" size=1>
   <option value='' selected></option>
   <option value='Куркино'>Куркино</option>
   <option value='Абрамцево'>Абрамцево</option>
   <option value='Бурцево'>Бурцево</option>
   <option value='Сходня'>Сходня</option>
   <option value='Химки'>Химки</option>
   </select><br><br>
   <input type="submit"  value="Запросить">
   <input type="hidden" name="layer" value="prostokarta">
   <input type="hidden" name="layer" value="base">
   <input type="hidden" name="mode" value="browse">
</form>
<div align="center">
<input type="image" name="img" src="[img]" width="300" height="200">
</div>
</body>
</html>
Вторая:

Код: Выделить всё

<html>
<head><title>Выпадающие списки</title></head>
<body>
<script language=javascript>
          function OnSelect(select){
          switch (select.selectedIndex) {
case 0:
with (document.add.imtc) {
options.length = 0;
options[options.length]=new Option('Сделайте выбор');
selectedIndex = 0;
}; break;
case 1:
with (document.add.imtc) {
options.length = 0;
options[options.length]=new Option('Сделайте выбор');
options[options.length]=new Option('Химки');
options[options.length]=new Option('Абрамцево');
selectedIndex = 0;
}; break;
case 2:
with (document.add.imtc) {
options.length = 0;
options[options.length]=new Option('Сделайте выбор');
options[options.length]=new Option('Химки');
options[options.length]=new Option('Сходня');
options[options.length]=new Option('Куркино');
selectedIndex = 0;
}; break;
case 3:
with (document.add.imtc) {
options.length = 0;
options[options.length]=new Option('Сделайте выбор');
options[options.length]=new Option('Сходня');
options[options.length]=new Option('Абрамцево');
options[options.length]=new Option('Бурцево');
selectedIndex = 0;
}; break;
case 4:
with (document.add.imtc) {
options.length = 0;
options[options.length]=new Option('Сделайте выбор');
options[options.length]=new Option('Бурцево');
selectedIndex = 0;
}; break;
case 5:
with (document.add.imtc) {
options.length = 0;
options[options.length]=new Option('Сделайте выбор');
options[options.length]=new Option('Абрамцево');
selectedIndex = 0;
}; break;
}
}
</script>
<form name="mapserv" method="GET" action="/cgi-bin/mapserv.exe" id="add" name="add" onsubmit="return 

CheckOnSubmit();>
   <input type="hidden" name="map" value="[map]">   
   <div align="left">Овощи</div>
   <select name="group" id='group' onChange="javascript:OnSelect(this)" size=1>

   <option selected></option>
   <option value='Грибы'>Грибы</option>
   <option value='Ягода'>Ягода</option>
   <option value='Хвосты'>Хвосты</option>
   <option value='Нитки'>Нитки</option>
   <option value='Картофель'>Картофель</option>
   </select>
   <select name="imtc" id='group' style="width:135px"></select>
<script language="JavaScript">OnSelect(document.add.group);</script>
<input type="submit"  value="Запросить">
   <input type="hidden" name="layer" value="prostokarta">
   <input type="hidden" name="layer" value="base">
   <input type="hidden" name="mode" value="browse">
</form>
<div align="center">
<input type="image" name="img" src="[img]" width="300" height="200">
</div>
</body>
</html>
С Уважением, Антон

Аватара пользователя
wmk
Активный участник
Сообщения: 102
Зарегистрирован: 11 янв 2009, 17:38
Репутация: 0
Откуда: Казань
Контактная информация:

Re: MapServer и JavaScript

Сообщение wmk » 20 май 2009, 15:54

Ну вот это зависимые списки ... но если делать что то более глобальное с динамическим формированием то надо использовать Ajax и получать данные из XML или SQL через PHP.

Написано на JQuery ... можно было и на чистом JS , но было лень.

Код: Выделить всё

<head>
<script src="js/jquery-1.2.6.js" type="text/javascript"></script>
<script type="text/javascript">
  $().ready(function() {

   $("#btn").click 
	(
	function()
		{
		$('#link').val( 'test.php?map=' + $("#select2").val() + '&param=' + $("#select1").val() );
		}
	);

   $("#select1").change 
	(
	function()
		{
		if ($(this).val() == 1)
			{
			$('select[@id=select2] option').remove();
			$('#select2').append('<option value="MyValue1">Новый элемент списка</option>');
			$('#select2').append('<option value="MyValue2">Новый элемент списка</option>');
			$('#select2').append('<option value="MyValue3">Новый элемент списка</option>');
			$('#select2').append('<option value="MyValue4">Новый элемент списка</option>');
			$('#select2').append('<option value="MyValue5">Новый элемент списка</option>');
			}
		if ($(this).val() == 2)
			{
			$('select[@id=select2] option').remove();
			$('#select2').append('<option value="MyValue6">Новый элемент списка</option>');
			$('#select2').append('<option value="MyValue7">Новый элемент списка</option>');
			$('#select2').append('<option value="MyValue8">Новый элемент списка</option>');
			}
		if ($(this).val() == 3)
			{
			$('select[@id=select2] option').remove();
			$('#select2').append('<option value="MyValue9">Новый элемент списка</option>');
			$('#select2').append('<option value="MyValue10">Новый элемент списка</option>');
			}
		}
	);
  });
</script>
  
</head>

<body>
<select id="select1" style='width:200px' size="6">
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
</select>
<select id="select2" style='width:200px' size="6"></select>
<br><br>
<input type="text" id="link" style='width:400px'>
<br>
Выбери пункты в обоих селектах и нажми<br>
<input type="button" id="btn" value="Полчить ссылку" style='width:400px'>

</body>
</html>

Вложения
jquery-1.2.6.rar
Библиотека версии 1.2.6
(22.96 КБ) 501 скачивание
OurGuns.ru - пневматическое оружие России и мира
Пневматическое оружие , Страйкбольное оружие , Пейнтбольное оружие

di@mond
Интересующийся
Сообщения: 47
Зарегистрирован: 13 апр 2009, 14:34
Репутация: 0
Откуда: Астрахань
Контактная информация:

Re: MapServer и JavaScript

Сообщение di@mond » 29 май 2009, 11:59

Скажите пожалуйста, так как все-таки была решена проблема с зависимыми списками?? Если не сложно, можете привести часть работающего (!) кода? :roll:

Аватара пользователя
arzobispo
Активный участник
Сообщения: 230
Зарегистрирован: 10 сен 2008, 10:28
Репутация: 3
Контактная информация:

Re: MapServer и JavaScript

Сообщение arzobispo » 23 июн 2009, 05:54

di@mond писал(а):Скажите пожалуйста, так как все-таки была решена проблема с зависимыми списками?? Если не сложно, можете привести часть работающего (!) кода? :roll:
Проблема так и не решена, пришлось все упрощать до уровня Герасимовской табуретки :)
Если можете помочь или знаете Кто может, напишие в аську или на форум.
Также есть еще один вариант решения проблемы, но пока у меня времени нет. А вариант такой, это использовать РНР, чтобы предварительно скрипт обращался к PSQL и там выбирал то, что реально вписано в БД, а все остальное не отображал, приэтом будет порядка 5- таблиц, это все у меня работает пока на MSA, а вот времени переписать нетю :(
С Уважением, Антон

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя