jQuery заполняет элементы в Select с помощью jQuery ajax JSON, php
у меня есть поле выбора. Я должен заполнить параметры, взятые из таблицы mysql.
Вот немного php-кода, который я сделал с помощью Codeigniter 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");
код работает нормально. Когда я вызываю сообщение, я получаю categoryid в результате.
Теперь я должен изменить код выше, поэтому я могу сделать:
- опубликовать вызов ajax, отправив идентификатор категории. это сделано
- получить категориях для этой категории и постройте массив *
- json_encode массив и Эхо *
- получить результаты обратно в вызов jQuery ajax, декодировать и построить поле *
массив должен быть построен с каждым элементом, имеющим поддерево с идентификатором и именем, верно? Большое спасибо заранее за любую помощь
4 ответов
это не сильно отличается.
$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-кодированный массив объектов, содержащий пары имя / значение. Затем вы можете создать свой select итеративно, используя их.
$.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);
}
in View добавить опцию выбора
<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;
}
наслаждаемся код....