jQuery заполняет элементы в Select, используя jQuery ajax json, php

У меня есть поле выбора. Я должен заполнить варианты, взятые из таблицы mysql.
Вот несколько небольших PHP-кода, которые я сделал с помощью frameworkignign framework

$idcateg = trim($this->input->post('idcategory')); $array1 = array( 'result' => $idcateg ); echo json_encode($array1); 

Теперь вызов jQuery …

 $.post("<?=base_url()?>index.php/rubro/list_ajax/", { 'idcategory' : idc }, function(data){ alert(data.result); }, "json"); 

Код работает нормально. Когда я вызываю сообщение, я получаю в результате категорию.
Теперь я должен изменить код выше, чтобы я мог:

  • отправьте вызов ajax, отправив идентификатор категории. готово
  • получить подкатегории для этой категории и построить массив *
  • json_encode массив и echo *
  • получить результаты обратно в jQuery ajax-вызов, декодировать и построить поле <select>

Массив должен быть построен с каждым элементом, имеющим sub-array с id и именем, правильно? Большое спасибо за любую помощь

Это совсем не так.

 $idcateg = trim($this->input->post('idcategory')); $result = array(); $id = mysql_real_escape_string($idcateg); $res = mysql_query("SELECT * FROM subcategories WHERE category = $id"); while ($row = mysql_fetch_array($res)) { $result[] = array( 'id' => $row['subcatid'], 'desc' => $row['description'], ); } echo json_encode($result); 

с:

 $.post("<?=base_url()?>index.php/rubro/list_ajax/", { 'idcategory' : idc }, function(data) { var sel = $("#select"); sel.empty(); for (var i=0; i<data.length; i++) { sel.append('<option value="' + data[i].id + '">' + data[i].desc + '</option>'); } }, "json"); 

Да. Вы хотите передать обратно JSON-кодированный массив объектов, содержащих пары имя / значение. Затем вы можете создать свой выбор, итеративно, используя их.

 $.post("<?=base_url()?>index.php/rubro/list_ajax/", {'idcategory' : idc }, function(data){ var select = $('#selectName').empty(); $.each(data.values, function(i,item) { select.append( '<option value="' + item.id + '">' + item.name + '</option>' ); }); }, "json"); 

вы также можете просто использовать $ (). load () и создать свой PHP-код тегами <option>

  $return = ""; while ($row = mysql_fetch_array($res)) { $value = $row['value']; $text = $row{'text']; $return .= "<option value='$value'>$text</option>\n"; } print $return; } 

 $('#select').load("<?=base_url()?>index.php/rubro/list_ajax/"); 

Попробуйте использовать следующий код.

В контроллере ———

 public function AjaxTest() { $rollNumber = $this->input->post('rollNumber'); $query = ""; if($rollNumber !="") { $query = $this->welcome_model->get_students(); } else { $query = $this->welcome_model->get_students_informationByRoll($rollNumber); } $array = array($query); header('Content-Type: application/json', true); echo json_encode($array); } 

В представлении «Добавить выбор»

 <input type="text" id="txtSearchRoll" name="roll" value="" /> <input type="button" name="btnSubmit" value="Search Students" onclick="return CheckAjaxCall();"/> <select id="myStudents"> <option> --Select-- </option> </select> 

Теперь скрипты —-

 function CheckAjaxCall() { $.ajax({ type:'POST', url:'<?php echo base_url(); ?>welcome/AjaxTest', dataType:'json', data:{rollNumber: $('#txtSearchRoll').val()}, cache:false, success:function(aData){ $('#myStudents').get(0).options.length = 0; $('#myStudents').get(0).options[0] = new Option("--Select--", "0"); $.each(aData, function(i,item) { $('#myStudents').get(0).options[$('#myStudents').get(0).options.length] = new Option(item[i].Name, item[i].roll); // Display Value }); }, error:function(){alert("Connection Is Not Available");} }); return false; } 

Наслаждайтесь кодом ….