Здравствуйте, есть два селекта, при выборе первого, должен смениться состав второго, это должно произойти без перезагрузки страницы. Как вывести список я то знаю в php, но нужно это всё сделать без перезагрузки... Как такое сделать? Или возможно есть готовые хорошие решения по этому поводу? Спасибо
katama это делается через javascript. если данные загружаются с сервера - ajax, если данных не так много, то можно выводить массив напрямую в страницу, и уже на самой странице фильтровать
В принципе я так и думал, а можно поконкретней как реализовать, если данных не так уж и много ... ? спасибо
[sql] <select id="mainselect" onchange="MyAjaxFunction;"><.............></select> <select id="secondselect" name=second><...></select> <script type="bla bla bla"> /* Фреймворк jquery params = trigger - naprimer {'getSelect' : 1} и отправим значение селекта - что бы понять что там на выбирали получется примерно так {'getSelect' : 1, 'mainselect' : $('#mainselect').val()} function - функция обработки ответа сервера в неё приходят входные параметры, первый параметр хранит в себе ответ сервера на запрос, второй и третий параметр это для самостоятельной работы. Ответ сервера далее мы и обрабатываем. джсон формат данных - навыбор хсм, хтмл, джсон нужен для того что бы сформировать ответ в формате пригодным для обработки дальше джавой. */ function MyAjaxFunction(){ $.post(url,params,function lets_dance_over_result(data),'json') //например джсон? Лучше на самом деле именно он return true; /* Решил помочь тебе и не поленился отыскать пример $.post("test.php", { "name" : "John", "time" : "2pm" }, function(data){ alert("Data Loaded: " + data); }); */ } function lets_dance_over_result(data){ var key,value; $.each(data,function(key,value){ $('#secondselect').append('<option value=' + data[key].value..... +'>' + data[key].name + '</option>'); }); // Each я думаю и матрёне понятно, а вот append в тело текущего объекта в нашем случае селект, добавляет то что внутри скобок - в нашем случае мы добавляем опции селекту. Изначально в селекте может быть, и должен быть пустой опцион -заглушка ( это про валидную верстку) типа- веберите вначале в первом селекте. Хтмл теги и остальной мусор советую дописывать Джавой, а не выливать этот мусор ответом сервера - если у тебя 10001 тег опций - ты не хило сократишь таким образом трафик. </script> <?php //he hoy how if(isset($_POST['getSelect']) && $_POST['getSelect'] == 1 && isset($_POST['mainselect'])){ //На самом деле важно проверить что к нам вообще пришло - но это уже тема других вопросов. В нашем случае мы проверяем дошло ли вообще что то? /*Lets say we have builded array = array{value => value, name => name} */ $encoded = json_encode($array) echo $encoded; unset($encdoed); return true; } //Мы вернули ответ серверу в виде массива данных - сервер ждёт ответа в формате дсон(это формат - можно перевести как джава данные) и получив такой ответ он сразу все превратит в нормальный джава массив. И дальше - выше мы с ним работаем как data.value data.name выбирая ключи ?>[/sql] На самом деле в уже написанном тебе должно хватить сил разобраться и сделать то что ты хочешь. Есть НО - Кверь - библиотека надо скачать - или линк на google lib ( лучше скачать) функция json_encode не то что бы совсем встроенная в php но есть почти в любом ув-ем себя хостинге. Если нет её то не беда - можно например в хмл все конвертить - xml структуру если нет библиотек обработки можно и самому подгуглить и нарисовать - и через echo так же вывести ответ. Enjoy!