Доброго времени суток! Мне надо вывести значение(option) в drop down menu через java scrip при помощи json. Что у меня получилось на текущий момент PHP: <?php // clean up the JSON message $defect = trim($_GET['article']); // check that the article field isn't empty //$response = false; if ( $defect ) { // Check the database $db =& JFactory::getDBO(); $query = "SELECT `htmlname` FROM `#__models`,`#__defect` WHERE `dSerialItem`= `mSerialItem` and LOWER(`article`) = ".$db->quote($defect).";"; $db->setQuery($query); $list = $db->loadObjectList(); foreach($list as $pdefect) { $ldefect = $ldefect. $pdefect->htmlname;} } $respdef = array('defect_ok' => $ldefect); //send the reply echo json_encode($respdef); // stop the from running $MyForm->stopRunning = true; die; ?> js [js]window.addEvent('domready', function() { var url = 'index.php?option=com_chronoforms&chronoform=form_act_oglyadu_tech&event=ajaxEvent1&format=raw'; var article = $('article'); article.addEvent('blur', function() { var value = article.value.trim(); var jSonRequest = new Request.JSON({ url : url, method : 'get', data : {article : article.value}, onComplete : function(r) { //$("#pole").val(r.article_ok); $('descdefect').value = r.defect_ok; } }).send(); }); });[/js] Понимаю что причина кроется в этой строчки [js]$('descdefect').value = r.defect_ok;[/js] descdefect - это мое селект меню в html, но как вывести правильно не знаю. Подскажите кто может :cry:
делал подобное на jquery, подгружая данные аяксом: [js] $.get('/url/to/json/array', {}, function(data){ for(c = 0; c < data.length; c++){ var option = '<option value="' + data[c]['value'] + '">' + data[c]['title'] + '</option>'; $('#selectbox_id').append(option); } }, "json"); [/js]
если элемент $('descdefect') - это input, то Код (Text): $('descdefect').value = r.defect_ok; вот это должно работать, если это div, span и т.д. то подойдёт Код (Text): $('descdefect').set('text',r.defect_ok);
sapun если дело в синтаксисе мутулза, то так и нужно написать в заголовке, или хотя бы в теле вопроса. переделай название топика, укажи что нужна помощь по mootools. кто знает - может откликнется.
Это не инпут и не див, это селект меню HTML: <select name="descdefect"><option value="0">Не вибрано</option> </select> Вот сюдна надо вывести значения
чтобы стало новым option? тогда так: Код (Text): var option = new Element('option',{'value':r.defect_ok}).set('text',r.defect_ok); option.inject($('das'));
Заменил, но не работает, что опять может быть не так? [js]window.addEvent('domready', function() { var url = 'index.php?option=com_chronoforms&chronoform=form_act_oglyadu_tech&event=ajaxEvent1&format=raw'; var article = $('article'); article.addEvent('blur', function() { var value = article.value.trim(); var jSonRequest = new Request.JSON({ url : url, method : 'get', data : {article : article.value}, onComplete : function(r) { // $('descdefect').append(r.defect_ok); var option = new Element('option',{'value':r.defect_ok}).set('text',r.defect_ok); option.inject($('das')); } }).send(); }); });[/js]
Да вроде так и сделал, но все равно не работает [js]window.addEvent('domready', function() { var url = 'index.php?option=com_chronoforms&chronoform=form_act_oglyadu_tech&event=ajaxEvent1&format=raw'; var article = $('article'); article.addEvent('blur', function() { var value = article.value.trim(); var jSonRequest = new Request.JSON({ url : url, method : 'get', data : {article : article.value}, onComplete : function(r) { // $('descdefect').append(r.defect_ok); var option = new Element('option',{'value':r.defect_ok}).set('text',r.defect_ok); option.inject($('descdefect')); } }).send(); }); });[/js] Если смотреть через firebug, то вижу o is null [Прерывать на этой ошибке] (function(){this.MooTools={version:"1....,2)+"</invoke>");return eval(rs)}})();
defect_ok "test_2Відключення захисних релеДефект покриттяДефект решітки/декаДефект ручокДефект ущільнювачаЗапах газу/ пропускає газЗбій програми, повідомлення про помилкуЗбій у роботі вентилятораНе вмикаєтьсяНе гріє, або недостатній нагрівНе працює духовкаНе працює електрична конфоркаНе працює електропідпалНе працює індикаціяНе працює інфрачервоний нагрівач (гриль)Не працює пальникне працює роженне працює сенсорНе працює таймер/модуль/годинникНе працює ТЕНне світить лампаНе тримає полум'я пальникНеобхідна докомплектаціяНещільно прилягають дверіОплавлення ручок (панелі, рамки)Проблеми з регулюванням потужності нагрівуРозтріскування внутрішнього скла/ скла поверхніСамовільно вимикаєтьсяШуми при роботі" вот что у меня
Кидаю все, совсем уже ничего не понимаю((( html HTML: <select name="descdefect"><option value="0">Не вибрано</option> </select> php PHP: <?php // clean up the JSON message $defect = trim($_GET['article']); // check that the article field isn't empty //$response = false; if ( $defect ) { // Check the database $db =& JFactory::getDBO(); $query = "SELECT `defect` FROM `#__models`,`#__defect` WHERE `dSerialItem`= `mSerialItem` and LOWER(`article`) = ".$db->quote($defect).";"; $db->setQuery($query); $list = $db->loadObjectList(); foreach($list as $pdefect) { $ldefect = $ldefect. $pdefect->defect;} } $respdef = array('defect_ok' => $ldefect); //send the reply echo json_encode($respdef); // stop the from running $MyForm->stopRunning = true; die; ?> js [js]window.addEvent('domready', function() { var url = 'index.php?option=com_chronoforms&chronoform=form_act_oglyadu_tech&event=ajaxEvent1&format=raw'; var article = $('article'); article.addEvent('blur', function() { var value = article.value.trim(); var jSonRequest = new Request.JSON({ url : url, method : 'get', data : {article : article.value}, onComplete : function(r) { // $('descdefect').append(r.defect_ok); var option = new Element('option',{'value':r.defect_ok}).set('text',r.defect_ok); option.inject($('descdefect')); } }).send(); }); });[/js]
ещё вот так попробуйте Код (Text): onComplete : function(r) { $('descdefect').innerHTML += '<option>'+r.defect_ok+'</option>'; }
article, поле на котором срабатывает событие и из которого берется переменная в запрос При последнем варианте получил ошибку(((( $( [Прерывать на этой ошибке] $('descdefect').innerHTML += '<option>'+r.defect_ok+'</option>';
То что данные приходят проверял так, взял и передал их в обычный инпут, в валуе и весь массив данных туда попал
а ну ясно возьмите замените селект на: HTML: <select id="descdefect"><option value="0">Не вибрано</option> </select> просто не находит id элемента
Спасибо, Вы ГУРУ!!!!Остался последний вопрос, мне все вывилось в одну строку, хоть <option> вроде есть. Вывилось так Дефект1Дефект2Дефект3, а хотелось так Дефект1 Дефект2 Дефект3 В чем может быть подвох?
я так и знал, что это будет следующий вопрос))) данные приходят с разделительным слешем? ну то есть Дефект1/Дефект2/Дефект3