Помощник
|
Работа с переменными Javascript, работа с переменными Javascripta |
linad
|
Сообщение
#1
|
||
|
|
||
|
|||
ZiTosS |
12.3.2009, 11:26;
Ответить: ZiTosS
Сообщение
#2
|
|
Хех вы хотите чтобы мы в PHP вставили JS? У нас этого не получится. Я вам напишу простой пример с Ajax но только позже...
|
|
|
linad
|
Сообщение
#3
|
|
Хорошо, жду с не терпением!
главное мне как-то значение переменной передать ! |
|
|
ZiTosS |
14.3.2009, 11:15;
Ответить: ZiTosS
Сообщение
#4
|
|
Вот как и обещал работа с Ajax для вашего примера, конечно я накатал на скорую руку, а так многие параметры можно передавать в функцию и работать с ними, а не каждый раз искать элемент с нужным нам ID.
<html> <head> <script type="text/javascript"> /* функция создания объекта XMLHttpRequest и выполнение запроса*/ function makeRequest(url) { // создание объекта для разных браузеров var http_request = false; if (window.XMLHttpRequest) { http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } // если объект не создан if (!http_request) { alert('Не вышло Невозможно создать экземпляр класса XMLHTTP '); // выдаём сообщение. return false; } var id = document.getElementById("select1").value; //значение выбранное в первом селекте(марка) if(id != 0) // Если выбран НЕ первый пункт { http_request.onreadystatechange = function() { alertContents(http_request); }; // функция-обработчик http_request.open('GET', url+"?id="+id, true); //сам запрос в виде ("тип_запроса", "адрес", "асинхронность") http_request.send(null); //отправка дополнительных параметров } else { document.getElementById("mySelect").disabled = true; // если выбрали первый пункт закрываем селект } } //функция возвращения и обработки результата function alertContents(http_request) { if (http_request.readyState == 4) // если состояние "выполнено" { if (http_request.status == 0 || http_request.status == 200) // если не возвращено никакой ошибки { var mySelect = document.getElementById("mySelect"); // select с id="mySelect" mySelect.disabled = false; // делаем его возможным к выбору mySelect.innerHTML = http_request.responseText; //возвращаем в селект результат. } else { return false; } } } </script> </head> <!-- при загрузке документа --> <body onLoad="makeRequest('./ajax.php')"> <!-- при выборе какого-либо пункта --> <select id="select1" onChange="makeRequest('./ajax.php')"> <option value="0">Марка</option> <option value="1">Lada</option> <option value="2">BMW</option> </select> <br><br> <select id="mySelect" disabled="true"> <option value="0">Модель</option> </select> </body> </html> файл к которому идёт ajax запрос, в данном случае это PHP файл(ajax.php) <?php header('Content-Type: text/html; charset=windows-1251'); switch(intval($_GET['id'])){ case 1: ?> <option value="1">Калина</option> <option value="2">3110</option> <option value="3">Копейка</option> <? break; case 2: ?> <option value="1">MX3</option> <option value="2">MX5</option> <? break; default: break; } ?> Как видите я формирую <option> в зависимости от присланного скриптом ID, так эе можно работать и с базой |
|
|
linad
|
Сообщение
#5
|
|
спасибо!
|
|
|
linad
|
Сообщение
#6
|
|
ZiTosS, Ваш код работает только в Mozilla и Opera. А подскажите пожалуйста почему он не работает под IE. Второй select становится активным, но список туда не подгружается (select - пуст).
|
|
|
v1ex |
18.5.2009, 14:10;
Ответить: v1ex
Сообщение
#7
|
|
mawa, http://www.w3schools.com/ajax/ajax_browsers.asp в помощь.
|
|
|
linad
|
Сообщение
#8
|
|
У меня точно так!
Вот код: function makeRequest(url) { //var response_1=false; // создание объекта для разных браузеров var http_request = false; if (window.XMLHttpRequest) { alert("opera"); http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { try { alert("IE_1"); http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { alert("IE_2"); http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } // если объект не создан if (!http_request) { alert('Не вышло Невозможно создать экземпляр класса XMLHTTP '); // выдаём сообщение. return false; } var id = document.getElementById("select1").value; //значение выбранное в первом селекте(subject) if (id != 0) // Если выбран НЕ первый пункт { http_request.onreadystatechange = function() { alertContents(http_request); }; // функция-обработчик http_request.open('GET', url+"?id="+id, true); //сам запрос в виде ("тип_запроса", "адрес", "асинхронность") http_request.send(null); //отправка дополнительных параметров } else { document.getElementById("mySelect").disabled = true; // если выбрали первый пункт закрываем селект } //----------------------------------- } //функция возвращения и обработки результата function alertContents(http_request) { if (http_request.readyState == 4) // если состояние "выполнено" { if (http_request.status == 0 || http_request.status == 200) // если не возвращено никакой ошибки { var mySelect = document.getElementById("mySelect"); // select с id="mySelect" //response_1=true; mySelect.disabled = false; // делаем его возможным к выбору mySelect.innerHTML = http_request.responseText; //возвращаем в селект результат. } else { return false; } } } Работаю для IE_6. Выдает сообщение "IE_1", делается активным второй select и ВСЕ! Не могу понять в чем ошибка! |
|
|
ZiTosS |
21.5.2009, 19:58;
Ответить: ZiTosS
Сообщение
#9
|
|
|
Попробуйте просто сделать текстовый файл к которому обращаемся и сделайте не присвоение
mySelect.innerHTML = http_request.responseText; //возвращаем в селект результат. А просто alert(http_request.responseText) Мне просто кажется что IE не понимает что значит innerHTML у SELECT. Он тупой осёл...
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Нужна работа | 0 | filatd | 739 | 12.1.2024, 17:08 автор: filatd |
|
Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery Разработка сайтов и сервисов под-ключ |
0 | alexey | 1242 | 24.11.2023, 14:46 автор: alexey |
|
Работа: Разная рутина Работа, разные рутинные задачи: постинг / переговоры / поиск |
1 | ivanshargin | 958 | 31.10.2023, 17:55 автор: ServersExpert |
|
Нужна удаленная работа Нужна удаленная работа |
0 | filatd | 1014 | 12.9.2023, 11:40 автор: filatd |
|
Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP) | 56 | qpPeW | 44911 | 19.7.2023, 10:03 автор: qpPeW |
Текстовая версия | Сейчас: 20.4.2024, 13:16 |