powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Помогите принять решение..
21 сообщений из 21, страница 1 из 1
Помогите принять решение..
    #35326842
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне вот что нужно:

Есть два селекта.

В первом Страну а при выборе страны во втором появляются города для этой страны.
Нехочется делать в базе,файле и т.д

нужно напрямую поместить в код.. как это сделать? Очень нужно..

Заранее спасибо всем..
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35326989
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zhenekнужно напрямую поместить в код.. как это сделать?
В какой код HTML, серверный код?
Если HTML, то пробежаться по всем option'ам и проставить им свойство style.display. Но ты представляешь какое счастье получит клиент, получив города по всему миру?

А чем не устраивают отдельные файлы на сервере? Имхо самое красивое и читабельное, не считая БД
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327003
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я вот незнаю как реализовать файлы на серваке..
с ajax незнаком как и javascript (( тока php
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327004
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, повод XmlHttpRequest заюзать. Я б так и сделал.
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327118
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, тут тебе однозначно AJAX нужен

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327136
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да.. вот сижу с аяксом разбираюсь...

Щас только пытаюсь сделать кнопку напротив ввода логина на проверку занятости и свободности... Пока чужой код для этих целей приспособил..

Меня камнем тянет вниз незнание javascript
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327305
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Появился вопросик...

Все я получил данные..
Вот как я их вывожу :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
        if (req.status ==  200 ) {
           
			document.feedback.stat.value=req.responseText;
	
        } else {
            document.feedback.stat.value=("ERROR");
        }


тоесть они помещаются в <inpute а как мне их просто словом поместить.. просто текстом.
пробовал document.write("") выдается только на чистом листе.Все очищает и только переданное значение.

P.Sпередает два варианта Свободен или занят

Прошу помочь.. заранее спасибо всем..
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327336
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<div id="response"></id>
............................
if (req.readyState ==  4 ) {
  var lElem = document.getElementById('response');
  if (req.status ==  200 )
    lElem.innerText = req.responseText;
  else
    lElem.innerText = 'ERROR';
}

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327491
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
innerText свойство нестандартное и поддерживается не всеми браузерами. Например, ФФ его не знает.
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327512
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более того. innerHTML так же как и inner/outerText и outerHTML присутсвует только в одной спецификации - DHTML от Microsoft (т.е. нам доступно через MSDN и есть в каких-то внутренних стандартах MS). То есть в соответствии со стандартами w3c (DOM 1-2-3) для серьезных приложений, видимо, следует признать использование только методов DOM (createElement ...)
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327517
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Снова моя любимая тема :)
Идеальный вариант, конечно, - AJAX. На сервере делаешь выборку и кидаешь клиенту.
Вариантов несколько: кодировать в строку с разделителями и парсить ее у клиента, создавать xml и парсить у клиента, или создавать json-структуру и с помощью eval воспроизводить объект у клиента. Сразу скажу - третий вариант с офигенным превосходством опережает остальные, xml на втором месте, ну и первый способ - на последнем (split очень медленно работает). По объему передаваемой информации первый и третий способы примерно одинаковы, xml из-за своей структры тащит кучу "мусора". По парсингу третий самый быстрый, как уже говорил, но он и первый способы "подвешивают" систему, так как сначала создается структура, способ же с xml по не очень понятной мне причине систему не подвешивает и парсинг осуществляется параллельно с вставкой полей в селект.
Вывод: однозначное использование json - просто, быстро, надежно и удобно.
Ни в коем случае не создавать куски кода на сервере с последующей вставкой посредством innerHTML в код - это хуже, это неправильно, это медленно, это не кроссбраузерно ... не подходит, крутые ребята так не делают :).

Приведу свой пример. правда, у меня чуть более сложный вариант: есть провинции (Канада), а также критерий, по которому нужно делать выборку (все города, все населенные пункты, все по населению, все по рейтингу н/п, все по типу н/п), а также возможный второй критерий (население в диапазоне, тип н/п, диапазон рейтинга н/п и т.д.) В зависимости от введенных данных показывается список городов, причем в нужном порядке (алфавит, население, рейтинг), а также количество в заголовке.

Код html (стили обрезал, так что что-то может потеряться):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<tr><td>
	province: <select id="province"><option value="1">Alberta<option value="2">British Columbia<option value="3">Manitoba<option value="4">New Brunswick<option value="5">Newfoundland and Labrador<option value="6">Northwest territories<option value="7">Nova Scotia<option value="8">Nunavut<option value="9" selected>Ontario<option value="10">Prince Edward Island<option value="11">Quebec<option value="12">Saskatchewan<option value="13">Yukon Territory</select>
</td></tr>
<tr><td>
	criteria1: <select id="criteria1"><option value="all_cities">all cities and towns only<option value="all_settlements">all settlements in province<option value="division">   ... by divisions<option value="national_rank">   ... by national rank (by SGC  2006 )<option value="population" selected>   ... by population<option value="types">   ... by type of settlement</select>
</td></tr>
<tr><td>
	criteria1: <select id="criteria2"></select>
</td></tr>
<tr><td>
	<{container} id="header_city">city:</{container}><select id="city"></select>
</td></tr>

И 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.
document.getElementById("province").onchange = updateProvince;
document.getElementById("criteria1").onchange = updateProvince;
document.getElementById("criteria2").onchange = updateCriteria;

function updateCriteria() {
	request.open("POST", {myURL} + "?action=cities&province=" + document.getElementById("province").value + "&criteria1=" + document.getElementById("criteria1").value + "&criteria2=" + document.getElementById("criteria2").value + "&rand=" + Math.random(), true);
	request.onreadystatechange = function() {
		if (request.readyState ==  4 ) {
			document.getElementById("city").options.length =  0 ;
			var values = eval("(" + request.responseText + ")");
			for (var i in values.cities)
				document.getElementById("city").options.add(new Option(values.cities[i].text, values.cities[i].value));
			document.getElementById("header_city").innerHTML = "city" + (values.cities.length ==  0  ? "" : (" <font style=\"color: #ff0000; font-size: 7pt;\">(" + (values.cities.length -  1 ) + ")</font>")) + ":";
		}
	};
	request.send(null);
}
function updateProvince() {
	request.open("POST", {myURL} + "?action=criteria&province=" + document.getElementById("province").value + "&criteria1=" + document.getElementById("criteria1").value + "&rand=" + Math.random(), true);
	request.onreadystatechange = function() {
		if (request.readyState ==  4 ) {
			document.getElementById("criteria2").options.length =  0 ;
			var values = eval("(" + request.responseText + ")");
			for (var i in values.criterias)
				document.getElementById("criteria2").options.add(new Option(values.criterias[i].text, values.criterias[i].value));
			document.getElementById("criteria2").selectedIndex =  0 ;
			updateCriteria();
		}
	};
	request.send(null);
}
updateProvince();

Города получаю в виде:
{"cities":[{"value":12890,"text":"Toronto"},{"value":5682,"text":"Saskatoon"}]} и т.д.

Бекэнд не привожу, так как он у меня на Java, а в нем работает гораздо меньше людей, чем, к примеру, в ПэХаПэ. Но суть та же: получил запрос, обработал входящие параметры, сделал по ним запрос в БД, получил коллекцию и ее перегнал в строку, которую отправляю обратно. Все просто и доступно.

Если не нужно так сложно, можно сильно урезать, но я так оставил, чтобы видно было, как можно сделать, к примеру, выбор не только страна-город, но и, к примеру, страна-штат/провинция/округ/область-нас.пункт, когда изменение параметра в верхней части иерархии влечет за собой изменение всей "нижней" информации.
Кроме этого, зачастую приходится делать не просто выбор города из списка, а выбор списка городов по первым буквам (мне пришлось делать такую структуру для америкосов, когда в базе было около 160 тысяч городов и обработку вставки списка приходилось ждать до минуты, а по первым буквам это делалось гораздо быстрее).
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327519
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините за формат, забыл, что код не переносится ... :(
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327527
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ув IDVsbruck чето я с кодом не разобрался.. Да и такая сложная реализация мне ненужна..
Мнеб просто страна - города...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<div id="response"></id>
............................
if (req.readyState ==  4 ) {
  var lElem = document.getElementById('response');
  if (req.status ==  200 )
    lElem.innerText = req.responseText;
  else
    lElem.innerText = 'ERROR';
}

Вот. это то что мне нужно,но только бы чтоб и ФФ работало... им очень много народу пользуется...
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327533
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apapacyБолее того. innerHTML так же как и inner/outerText и outerHTML присутсвует только в одной спецификации - DHTML от Microsoft (т.е. нам доступно через MSDN и есть в каких-то внутренних стандартах MS). То есть в соответствии со стандартами w3c (DOM 1-2-3) для серьезных приложений, видимо, следует признать использование только методов DOM (createElement ...)
В спецификациях DOM действительно innerHTML для HTMLElement не упоминается. Порылась в книжке господина Флэнагана по js. Об innerHTML: "Это нестандартное свойство изначально появилось в IE4. Ныне оно реализовано во всех современных броузерах". Верить-то я ему верю (больно уж книжка хороша), осталось только догадаться, что есть "современные броузеры". Все-таки отказ от innerHTML в приложении иногда чрезвычайно неудобен.

Zhenek
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<div id="response"></id>
............................
if (req.readyState ==  4 ) {
  var lElem = document.getElementById('response');
  if (req.status ==  200 )
    lElem.innerText = req.responseText;
  else
    lElem.innerText = 'ERROR';
}
Вот. это то что мне нужно,но только бы чтоб и ФФ работало... им очень много народу пользуется...
а зачем Вам вообще innerText, Вам же селект нужен. Возвращайте аяксом строку типа "['Москва','Питер','Урюпинск']". Затем можно тем же самым eval'ом ее обработать и на основе полученного массива создать селект. Можно сделать совсем по-тупому - вернуть с сервера не массив, а уже готовую строку типа "<select><option value='Москва'>Москва</option>...</select>", а потом просто запихать ее в innerHTML какого-нибудь дива.
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327545
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
а зачем Вам вообще innerText, Вам же селект нужен

Не.. как я описал выше,это немного для другово.
Просто появилась необходимость вывести полученный от аякса текст.
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327575
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так и выводите, только не в innerText, а в innerHTML. Если в тексте есть хтмл-теги, то замените < и > на &lt; и &gt;.
Код: plaintext
1.
document.getElementById('ид_элемента').innerHTML = req.responseText.replace(/</g, '&lt;').replace(/>/g, '&gt;');
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35327633
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автору -учи джаваскрипт, напиши самодельный загрузчик, а потом возьми готовую библиотеку, и сделай на ней
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35357035
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckО! Снова моя любимая тема :)

не работает пример...
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35358074
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня уже в двух проектах работает. Я не сделал копипаст из проекта, а вытащил основную "концепцию". Дорабатывать надо самому ...
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35371474
vned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
function readResponse()
{
  //получить текст ответа
  var response=xmlHttp.responseText;
  if(response.indexOf("ERRNO")>= 0 
     ||response.indexOf("error:")>= 0 
     ||response.length== 0 )
    throw(response.length== 0 ?"Server error.":response);
  //получить ответ в формате XML
  responseXML=xmlHttp.responseXML;
  xmlDoc=responseXML.documentElement;
  result=xmlDoc.getElementsByTagName("result")[ 0 ].firstChild.data;

      my_doc=document.getElementById("selCity");
       my_doc.options[ 0 ].text="--Select City--";
        my_doc.options[ 0 ].value="--Select City--";
   }

   while(my_doc.options.length> 1 )//уберем лишние города
   {
     //немного кода для кросбраузерности
     if(my_doc.options && my_doc.options.remove)
        my_doc.options.remove( 1 );
     else if(my_doc.remove)
        my_doc.remove( 1 );
     else my_doc.options[ 1 ]=null;
   }
  //добавим новые
  
  
  for(var i= 0 ;i<xmlDoc.getElementsByTagName("result").length;i++){
        result=xmlDoc.getElementsByTagName("result")[i].firstChild.data;
        my_doc.options.length++;
        my_doc.options[i+ 1 ].text=result;
        my_doc.options[i+ 1 ].value=result;
  }

В примере опущено передача параметров на сервер. Получаем XML документ с полями "result"
проверено на ослике и ФФ. Вносим данные в селект с ID "selCity"
...
Рейтинг: 0 / 0
Помогите принять решение..
    #35371564
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ клиенту в XML - это самый долгий и неудобный способ, это уже сто раз обсуждалось. Создать xml, отправить с кучей "воды", потом распарсить и только тогда использовать - это слишком дорого и долго. Идеально для этих целей подходит JSON (хотя есть крохотные ограничения).
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Помогите принять решение..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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