jQuery使用jQuery ajax json,php将项目填充到Select中

Enr*_*que 6 php ajax jquery post json

我有一个选择字段.我必须填写从mysql表中获取的选项.
这是我使用codeigniter框架完成的一些小PHP代码

$idcateg = trim($this->input->post('idcategory'));
$array1 = array(
    'result' => $idcateg
);
echo json_encode($array1);
Run Code Online (Sandbox Code Playgroud)

现在,jQuery调用...

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

代码工作正常.当我调用帖子时,我得到了categoryid.
现在,我应该修改上面的代码,所以我可以这样做:

  • 发布ajax调用发送类别ID.这个完成了
  • 获取此类别的子类别,并构建数组*
  • json_encode数组和echo*
  • 在jQuery ajax调用中获取结果,解码并构建<select>字段*

应该构建数组,每个元素都有一个带有id和name的子数组,对吗?非常感谢您提供任何帮助

cle*_*tus 29

它并没有太大的不同.

$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);
Run Code Online (Sandbox Code Playgroud)

有:

$.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");
Run Code Online (Sandbox Code Playgroud)

  • 或者,代替`for`可能是:$ .each(data,function(key,val){sel.append($(“ &lt;option&gt;”)。val(data [key] .id).text (data [key] .desc));});`; (2认同)

tva*_*son 8

是.您希望传回包含名称/值对的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");
Run Code Online (Sandbox Code Playgroud)