powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / поля SELECT и AJAX
45 сообщений из 45, показаны все 2 страниц
поля SELECT и AJAX
    #35352670
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Помогите решить проблемку. хочу сделать меню выбора страны и города.
Поскольку городов у нас много, то при выборе страны подгружать с сервера автоматически.
Как сделать что б сервер отдавал данные по входящим value=id я знаю, а вот как отправить их туда и принять?
большая просьба, подскажите примерами.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35352791
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скажите честно - самостоятельно влом погуглить? В тырнете примеров миллиарды.

Простейшее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var oXMLHttp = createRequestObject();
oXMLHttp.open('post', "./my_script.cgi", true);
oXMLHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
oXMLHttp.onreadystatechange = function ()
{
  if (oXMLHttp.readyState ==  4 )
  {
    if (oXMLHttp.status ==  200 )
    {
      alert(oXMLHttp.responseText);
    }
  }
}
oXMLHttp.send('param1=value1;param2=value2');

Как должна выглядеть функция createRequestObject(), какие использованы методы и их описание можно прочитать даже в энциклопедии - XMLHttpRequest .
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35352827
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да я гуглил, не поверите - неделю все рабочее время...
но туго понимаю я что к чему :-(
вот, последний вариант который хоть как то работает, но написан крыво, а как ровнее сделать...

Код: 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.
<html><head>
<script type="text/javascript" src="XHConn.js"></script>
<script type="text/javascript">
var addressBook = {
  addEvent: function( obj, type, fn ){ 
    if (obj.addEventListener) { obj.addEventListener( type, fn, false ); }
    else if (obj.attachEvent) {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function() { obj["e"+type+fn]( window.event ); };
      obj.attachEvent( "on"+type, obj[type+fn] );
    }
  }
}
addressBook.addEvent(
  window, 'load', function() {
    addressBook.myConn = new XHConn();
    addressBook.addEvent( document.getElementById( 'person' ), 'change', function(){
      var fnWhenDone = function(oXML) { document.getElementById( 'address' ).innerHTML = oXML.responseText; };
      addressBook.myConn.connect("test.pl", "POST", "id="+this.value, fnWhenDone);
    } );
  }
);  
</script>
</head>
<body>
  <form action="test.pl" method="POST">
  <select id="person" name="person">
    <option value="1">Иванов Иван</option>
    <option value="2">Владимир Петров</option>
  </select>
  </form>
  <pre id="address"></pre>
</body></html>
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35352829
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illion, а будет ли ваш код совместим со всеми браузерами?
в примере который я привел используется скрипт http://xkr.us/code/javascript/XHConn/
котрый по утверждению авторов поддерживает:
Apple Safari 1.2+
Microsoft Internet Explorer 5.0+ (Windows)
Mozilla 0.7.3+ -- includes Firefox, Camino, etc.
Opera Browser 7.60 P1+ (Note: GET support only, as Opera doesn't yet support the setRequestHeader() method.)
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35352838
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yarnikillion, а будет ли ваш код совместим со всеми браузерами?
будет, если Вы пройдете по указанной мною ссылке и посмотрите, как правильно кроссбраузерно создавать объект XMLHttpRequest
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35352842
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собственно, Ваш XHConn.js использует практически тот же самый код:
Код: plaintext
1.
2.
3.
4.
try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
  catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  catch (e) { try { xmlhttp = new XMLHttpRequest(); }
  catch (e) { xmlhttp = false; }}}
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35352862
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ярник, я в шоке ... посмотри, будь добр, последние 3 страницы данного форума - найдешь минимум 3-4 темы по данному вопросу, причем с подробным кодом ... и не колупай мозг ...
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35352896
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckЯрник, я в шоке ...
а чего тут в шоке быть. Элементарная лень. Я вот захожу в гугл, пишу "ajax список городов", щелкаю по первой же открывшейся ссылке и наблюдаю там подробный пример. На поиск потрачено полминуты жизни. А человек "гуглил, не поверите - неделю все рабочее время" и вот те на! - ничего не нашел. Надо же, мистика какая.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35353494
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck - сам в шоке!

illion - ОГРОМНОЕ СПАСИБО за обе ссылочки, именно то что я искал неделю!
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35354447
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illion,
возможно ли вас услышать в асе 258050?
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35354535
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illion... захожу в гугл, пишу "ajax список городов", щелкаю по первой же открывшейся ссылке и наблюдаю там подробный пример ...

Ужасный пример на этой странице: у них Украина по-английски написана как "Ukrain". Не подходит.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35354546
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckУжасный пример на этой странице: у них Украина по-английски написана как "Ukrain". Не подходит.
Совершенно с вами согласен! поэтому ищу специалиста который смог бы исправить данную оЧепятку :-)
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35354622
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck illion... захожу в гугл, пишу "ajax список городов", щелкаю по первой же открывшейся ссылке и наблюдаю там подробный пример ...
Ужасный пример на этой странице: у них Украина по-английски написана как "Ukrain". Не подходит.
судя по "RUSSIAN", автор под "Ukrain" имел в виду не Украину, а "украинский". Но это у него тоже не получилось. Хорошо хоть USA не стал склонять. В целом в плане кода пример некорректен (сорри, раньше лень было вчитываться), но если объединить его с примером из википедии, то получится нормальный вариант.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35354665
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yarnik IDVsbruckУжасный пример на этой странице: у них Украина по-английски написана как "Ukrain". Не подходит.
Совершенно с вами согласен! поэтому ищу специалиста который смог бы исправить данную оЧепятку :-)
думаю, Вы его не найдете. Судя по Вашим вопросам, код целиком надо за Вас писать, а кто ж захочет. Я вот не хочу. Вам IDVsbruck намекал, что нужно всего лишь пролистать форум на несколько страниц (или поиском воспользоваться), и можно будет найти готовый ответ. Вы что-нибудь предприняли в этом направлении? Нет? пример с sql.ru
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35354731
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illion yarnikСовершенно с вами согласен! поэтому ищу специалиста который смог бы исправить данную оЧепятку :-)
думаю, Вы его не найдете. Судя по Вашим вопросам, код целиком надо за Вас писать, а кто ж захочет. Я вот не хочу.
Жаль, очень жаль...
Первый раз вижу человека который на форуме помагает, а платно скрипт отказывается писать...
Может передумаете?
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35354794
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yarnik
Первый раз вижу человека который на форуме помагает, а платно скрипт отказывается писать...
Может передумаете?
я пас. Платно скрипты я пишу на работе. Дома я принципиально ничего не пишу. На этот форум я пишу хз почему (самый большой от него толк - это отвлечься от основной задачи и потом взяться за нее с новыми силами или с другого конца. :-) ). За остальных отвечать не могу, может и найдутся среди них фрилансеры.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35354847
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illion
Отлично!
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35355202
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сабжу - XmlHttpRequest уже не юзаю (по причине отсутствия кроссдоменности). Использую вот это , чего программистам яваскрипт и рекомендую.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35355407
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeПо сабжу - XmlHttpRequest уже не юзаю (по причине отсутствия кроссдоменности). Использую вот это , чего программистам яваскрипт и рекомендую.

Спасибо. Серж!
Я конечно, знал за SCRIPT и IFRAME, но пребывал в наивной уверенности, что кросс-доменный JavaScript дает защиту полей документа от доступа. Хотя теперь понимаю, то это не может быть так. Если скрипт загружет - все под рукою.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35356229
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeПо сабжу - XmlHttpRequest уже не юзаю (по причине отсутствия кроссдоменности). Использую вот это , чего программистам яваскрипт и рекомендую.
есть вопрос по поводу безопасности.
Зачем было придумано "уникальный callback-id" если вот тут http://en.wikipedia.org/wiki/JSON написано, что где сервер отвечает только серверному скрипту
"the URL replying to the request must reside within the same DNS domain as the server that hosts the page containing the request" (c)
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35356385
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yarnikЗачем было придумано "уникальный callback-id"...
Это автор статьи чего-то намутил (я не использую "уникальный")
yarnikесли вот тут http://en.wikipedia.org/wiki/JSON написано, что где сервер отвечает только серверному скрипту
"the URL replying to the request must reside within the same DNS domain as the server that hosts the page containing the request" (c)
А этот текс как-раз подразумевает XmlHttpRequest.
Безопасность действительно под угрозой. Базу данных апдейтить JSONP не надо (хотя бы из тех соображений, что с клиента всё передаётся методом GET). А вот получать данные - можно.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35357085
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeЭто автор статьи чего-то намутил (я не использую "уникальный")
Можно пример без использования уникального?
я как ни пытаюсь его обрезать - отказывается работать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<script type="text/javascript">
var callbacks=new Object();
function callJSONP(url, func, arg) {
  var script = document.createElement('script');
  script.src = url;
  script.type = 'text/javascript';
  document.body.appendChild(script);
}
</script>

ShSerge yarnikесли вот тут http://en.wikipedia.org/wiki/JSON написано, что где сервер отвечает только серверному скрипту
"the URL replying to the request must reside within the same DNS domain as the server that hosts the page containing the request" (c)
А этот текс как-раз подразумевает XmlHttpRequest.
Безопасность действительно под угрозой. Базу данных апдейтить JSONP не надо (хотя бы из тех соображений, что с клиента всё передаётся методом GET). А вот получать данные - можно.
Почему подразумевает XmlHttpRequest? речь же идет о JSON
Где безопасность под угорозой?
JSON и JSONP это одно и тоже?

Простите за вопросы новичка
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35357227
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function getJSON(){
window.onload=getJSON;//например (или кнопка клик)
function getJSON(){
  var script = document.createElement("script");
  script.src = 'Default.aspx?callback=myFunction&пар1=знач1&пар2=знач2...';
  script.type = 'text/javascript';
  document.body.appendChild(script);
}
function myFunction(JSON_resp){
alert(JSONP_resp.чего-то_там.чего-то_там...);
}
JSON - некоторая структура данных определённого формата, которая м.б. получена с помощью XmlHttpRequest, например.
JSONP - механизм изменения данных на странице без перезагрузки и без использования реквеста.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35357587
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а рабочий пример можно? :-)
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35357879
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честное слово - лень. Тем более, что ты не говоришь, чего на сервере используешь. На самом деле, и в указанной статье - примерчик, если всё как положено собрать - работает.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35357958
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, по стартвопросу. При выборе страны (онченж первого селекта) - аппендЧилд скрипта с параметром ...чего_то_там?callbeck=...&strana="выбранная_страна". Коллбек функция - чистит второй селект и вставляет в него (аппендЧилд) данные из парамета коллбека.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35358062
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем кто следит за темой и за мной - спасибо! благодаря вашим стараниям и моим мучениям все же что то получилось "родить".
Скажу чесно, тут плагиата на 50% только :-)
Хочу услышать конструктивную критику, замечания, пожелания, наставления.
И вопрос, у меня не получается загнать текст ни в <div id="sity1"> ни в <select id="sity2">

Код: 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.
<html><head>
<META content="text/html; charset=windows-1251" http-equiv="Content-Type">
<script type="text/javascript">
function loadXMLDoc(params) {
  req = null;
  if (window.XMLHttpRequest) { try { req = new XMLHttpRequest(); }
    catch (e){} } else if (window.ActiveXObject) { try { req = new ActiveXObject('Msxml2.XMLHTTP'); }
    catch (e){ try { req = new ActiveXObject('Microsoft.XMLHTTP'); }
    catch (e){}}}
  if (req) {
    req.onreadystatechange = processReqChange;
    req.open("GET", "list.pl?id=" + params);
    req.send(null);
    reqTimeout = setTimeout("req.abort();",  5000 );
  } else { alert("Браузер не поддерживает AJAX"); }
}

function processReqChange() {
  if (req.readyState ==  4 ) {
    if (req.status ==  200 ) { document.form1.response.value=req.responseText; }
    else { alert("Не удалось получить данные:\n" + req.statusText); }
  }
}
</script>
</head>
<body>
<form name=form1>
Страны <select id='sel' onchange="loadXMLDoc(sel.value);" value="GET">
  <option value="Ukraine" selected>Ukraine</option>
  <option value="USA">USA</option>
  <option value="RUSSIAN">RUSSIAN</option>
</select>

Города <div id="sity1"></div><select id="sity2"></select>

<textarea rows= 6  name=response></textarea>

</body>
</html>
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35358096
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ха-ха - здорово! Только не 50, а 85 процентов. Когда дорастёшь до 95-98% - будешь джедаем. Если хочешь, я в выходные тебе свой примерчик напишу для твоих данных - тебе понравится. Я так понял - на перле пишешь (ну это теперь всё-равно - понятно, как данные получаешь). Если дашь полную ссылку на свой list.pl - дам тебе хтмл-файл, который даже лёжа на рабочем столе будет точно также работать, как и загруженный с сервера (реквест так не умеет!).
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35358119
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не трудно догадаться что скрипт выдает те6кстовку <option value=$1>$2</option>
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35362803
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще немного изменений.
Неужели тяжело сказать верно или нет? что подправить, а что оставить...
Код: 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.
<html><head>
<META content="text/html; charset=windows-1251" http-equiv="Content-Type">
<script type="text/javascript">
function loadXMLDoc(params, tag) {
  req = null;
  if (window.XMLHttpRequest) { try { req = new XMLHttpRequest(); }
    catch (e){} } else if (window.ActiveXObject) { try { req = new ActiveXObject('Msxml2.XMLHTTP'); }
    catch (e){ try { req = new ActiveXObject('Microsoft.XMLHTTP'); }
    catch (e){}}}
  if (req) {
    req.open("GET", "test.pl?" + tag + "=" + params);
    req.send(null);
    if (req.readyState ==  4 ) {
      if (req.status ==  200 ) { document.getElementById(tag).innerHTML=req.responseText; }
    }
    reqTimeout = setTimeout("req.abort();",  5000 );
  }
  else { alert("Браузер не поддерживает AJAX"); }
}
</script></head>
<body>
<form>
<table><tr><td>
<select id='count' onchange="loadXMLDoc(this, 'sity');">
  <option>Страна</option>
  <option value="1">Ukraine</option>
  <option value="2">USA</option>
  <option value="3">RUSSIAN</option>
</select>
</td><td id="city">- выбирай тут</td></tr>
<tr><td>
<select id='Area' onchange="loadXMLDoc(this, 'street');">
  <option>Район</option>
  <option value="1">Центр</option>
  <option value="2">Окраина</option>
</select>
</td><td id="street">- и тут</td></tr></table>
<input type="submit"></form>
</body></html>
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35362818
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, создание XMLHttpRequesr надо вынести в отдельную функцию, создавать при загрузке страницы и не создавать при каждом запросе, а пользоваться экземпляром объекта.

Вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  if (req) {
    req.open("GET", "test.pl?" + tag + "=" + params);
    req.send(null);
    if (req.readyState ==  4 ) {
      if (req.status ==  200 ) { document.getElementById(tag).innerHTML=req.responseText; }
    }
    reqTimeout = setTimeout("req.abort();",  5000 );
  }
работать не будет, так как запрос асинхронный и для получения отклика нужен обработчик события onreadystatechange:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
req.open("GET", "test.pl?" + tag + "=" + params);
req.send(null);
req.onreadystatechange = function() {
    if (req.readyState ==  4 ) {
        if (req.status ==  200 ) 
            document.getElementById(tag).innerHTML=req.responseText;
    }
    reqTimeout = setTimeout("req.abort();",  5000 );
}

Практика с innerHTML крайне нежелательна (и непрофессилнальна). Создавай на сервере строку-объект JSON, передавай ее, с помощью eval создавай объект и DOM'ом вставляй в селект. Это наиболее быстрый, удачный, кроссбраузерный и профессиональный подход.

Вариант с прерыванием запроса через setTimeout выглядит просто дилетантским. Во-первых, с сервера можно получить столько объектов, что за 5 секунд их не распарсить и не вставить. А во-вторых, если браузер в течении 5 секунд получил данные и начал их парсить и вставлять, то к функции setTimeout он подойдет только тогда, когда интерпретатор выйдет их процесса парсинга, а не точно через 5 секунд. Так что данное решение плохое. Думаю, проколы с данными надо координировать с сервера, устанавливая какие-то блоки и проверки.

Вот что мне действительно понравилось в твоем коде - это расположение стран. Кул!
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35362980
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckНу, создание XMLHttpRequesr надо вынести в отдельную функцию, создавать при загрузке страницы и не создавать при каждом запросе, а пользоваться экземпляром объекта.
Начал искать что это за чудо и вот чего нашел:
"Когда-то обращение к функции httpRequest() я делал сразу при загрузке страницы через <body onload="httpRequest()"> и больше не создавал XMLHttpRequest объект. Но как оказалось, это работает для всех браузеров кроме IE, который каждый раз требует создавать новый объект. Поэтому вызов данной функции делается каждый раз перед отправкой данных." (c). Источник http://www.ixbt.com/soft/ajax.shtml

IDVsbruckВариант работать не будет, так как запрос асинхронный и для получения отклика нужен обработчик события onreadystatechange:
Спасибо понял.

IDVsbruckВот что мне действительно понравилось в твоем коде - это расположение стран. Кул!
Как раз это и был плагиат :-))

Остальное еще перевариваю.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35362987
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если получать данные через JSONP никакого реквеста не надо - статью-то (давал тынц) можно было и прочитать.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35363023
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge, на сколько я вижу, уважаемые IDVsbruck и illion почему то не используют этот замечательный метод JSONP.
С чем связано столь малая распространненость и не любовь в узких кругах сего метода?
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35363078
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yarnikShSerge, на сколько я вижу, уважаемые IDVsbruck и illion почему то не используют этот замечательный метод JSONP.
С чем связано столь малая распространненость и не любовь в узких кругах сего метода?
IDVsbruck и illion - это еще не пуп Земли, и Вы вольны использовать то, что считаете более подходящим своей цели :-). Я не использую JSONP, поскольку функции, основанные на XMLHttpRequest, полностью удовлетворяют моим задачам. Да и потом, я работаю только с методом POST, дабы избежать ограничений GET (мне порой приходится передавать на сервер достаточно сложные данные больших объемов).
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35363241
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То же самое ...
Просто не заморачивался с другими способами, но способ JSON with Padding также имеет полное право на жизнь. В моих приложениях надежный источник данных, который я формирую на сервере, а также огромное количество запросов и ответов на/с сервера, поэтому добавлять еще и дополнительные обработчики - это уже занадто ... хотя, возможно, в следующий раз буду реализовывать уже именно такую конструкцию.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35363880
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот, что имел ввиду (JSONP здесь ни при чём).
1.perl (пардон, лет 5 не писал забыл синтаксис):
Код: plaintext
1.
2.
$s="..."; //формируем на сервере строчку с содержимым селекта
print("myCallback(\'".$s."\'");
2.Теперь яваскрипт:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
//на onchange  1 -го селекта:
function getInnerHtml(){
  var script = document.createElement("script");
  script.src = 'myScript.pl';
  script.type = 'text/javascript';
  document.body.appendChild(script);
}

//и объявить ф-ю myCallback:
[src]
function myCallback(s){
document.getElementById('mySelect').innerHTML=s;
}
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35363891
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПС. Текст явно попроще будет, чем с реквестом или с JSONом. Получать таким образом данные в данном конкретном случае - вполне допустимо. А вот базу апдейтить не следует.
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35364697
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge,
Как все работает я уже понял, хотя думал что этот метод работает только с форматом JSON
Но в любом случае, как мен кажется, этот метод не позволяет выводить на экран статус запроса.
Допустим в начале запроса и возможно юзеру вывести сообщение "Идет загрузка" и если успешно все прошло убрать ее, но как быть с сообщеними о ошибках?

p.s. Вы не задумывались о написании мануала в Викпедии? :-)

p.p.s. Кстати, где можно почитать как парсить JSON?
Что б быть точнее, как втиснуть результат между тегами <option value=$1>$2</option>
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35364745
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yarnik
p.p.s. Кстати, где можно почитать как парсить JSON?
Что б быть точнее, как втиснуть результат между тегами <option value=$1>$2</option>
Зачем его парсить? - это уже есть ассоциативный массив в жс. - точечная нотация ...
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35364802
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge yarnik
p.p.s. Кстати, где можно почитать как парсить JSON?
Что б быть точнее, как втиснуть результат между тегами <option value=$1>$2</option>
Зачем его парсить? - это уже есть ассоциативный массив в жс. - точечная нотация ...
К примеру я передаю с сервера:
{
"1": "Москва",
"2": "Питер",
"3": "Киев"
}
или
{
"sity": [ "1", "Москва", "2", "Питер", "3", "Киев" ]
}
Вот как мне с этого сделать строчку "<select name=sity><option value=1>Москва</option><option value=2>Питер</option><option value=3>Киев</option></select>"?
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35365131
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yarnik
К примеру я передаю с сервера:
{
"1": "Москва",
"2": "Питер",
"3": "Киев"
}
Код: plaintext
1.
2.
3.
4.
5.
6.
var req = new XMLHttpRequest...
var respObj = eval("("+req.responseText+")")
var sel = document.createElement("select");
for(var a in respObj){
	sel.add( new Option(resp[a], a) );	
}
document.body.appendChild(sel);
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35365136
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXER
resp[a]

respObj[a]
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35365171
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немножко воображения ...

Передаешь:
{"cities":[{"value":"1","name":"Kiev"},{"value":"2","name":"Warshawa"},{"value":"3","name":"Vienna"}]}
При обработке переводишь в объект:
Код: plaintext
1.
2.
      var cities = eval("(" + request.responseText + ")").cities;
      for (var i in cities)
            document.getElementById("select_id").options.add(new Option(cities.name, cities.value));
Только перед каждой обработкой обнуляй список:
Код: plaintext
      document.getElementById("select_id").options.length =  0 ;
Удобно сразу в "value" вставлять поле id из соответствующей таблицы базы данных, где хранятся города (и соответственно при запросе делать Ordering).
...
Рейтинг: 0 / 0
поля SELECT и AJAX
    #35365177
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Меня уже опередили ...
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / поля SELECT и AJAX
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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