【问题标题】:CodeIgniter 3 - Change select values depending on the other selectCodeIgniter 3 - 根据其他选择更改选择值
【发布时间】:2015-12-17 14:33:06
【问题描述】:

我有一个carro 表与marcamodelo 有关系,这两个也有关系。我先添加了一个marca,然后在添加新的modelo时,必须先选择一个marca

现在,要添加一个新的carro,我必须选择一个marcamodelo。目前所有已注册的 modelo 都在列出,但我需要列出与所选 marca 相关的那些。以下是字段的select HTML。

<div class="row">
    <input id="hdn_id_marca" type="hidden" name="hdn_id_marca" value="0"/>
    <div class="form-group col-md-6">
        <label for="id_marca">Marca do Carro</label>
        <select id="id_marca" name="id_marca" class="form-control" required>
            <option value="" selected disabled>Selecione</option>
            <?php foreach ($marcas as $m) { ?>
                <option value="<?php echo $m['id']; ?>">
                    <?php echo $m['nome_marca']; ?>
                </option>
            <?php } ?>
        </select>
    </div>
    <div class="form-group col-md-6">
        <label for="id_modelo">Modelo do Carro</label>
        <select id="id_modelo" name="id_modelo" class="form-control" required>
            <option value="" selected disabled>Selecione</option>
            <?php foreach ($modelos as $m) { ?>
                <option value="<?php echo $m['id']; ?>">
                    <?php echo $m['nome_modelo']; ?>
                </option>
            <?php } ?>
        </select>
    </div>
</div>

这些值是从数据库中检索出来的,它不是任何静态值。我试图创建一个 Ajax:

$('#id_marca').change(function() {
    var selectedId = $(this).find('option:selected').val();
    $('#hdn_id_marca').attr('value', selectedId);

    $.ajax({
        url: '/admin/modelos/select_by_id_marca',
        data: {'hdn_id_marca': selectedId},
        type: 'POST',
        success: function() {
            alert(data)
        }
    });
});

然后我得到了

POST XHR http://localhost:8000/admin/modelos/select_by_id_marca [HTTP/1.1 500 内部服务器错误 53ms]

编辑 2

下面是我的select_by_id_marca() 方法。我还通过添加此方法应该可以访问的hidden 字段来更新以前的代码。经过一些更改,我修复了发生 500 错误的原因,但现在,根据所选 marca,该字段不仅仅填充了 modelo。 p>

public function select_by_id_marca()
{
    $data = array();

    $this->db->order_by($this->primary_key, 'DESC');
    $this->db->get_where('marca', array('id' => $this->input->post('hdn_id_marca')));
    $query = $this->db->get('marca');

    foreach ($query->result_array() as $row) {
        $data[] = $row;
    }

    $query->free_result();

    return $data;
}

【问题讨论】:

  • 添加你的select_by_id_marca函数。
  • 作为旁注,对于那些想知道的人:carro = car, marca = make , modelo = model.
  • @Hexaholic 你的意思是他尝试丰富的模型方法? :).. mfgabriel92 你能显示你尝试丰富的控制器操作代码吗..
  • @NiranjanNRaju Svetlio 我已经添加了方法,请看更新的问题! Hexaholic marca = 品牌。 :)
  • 各位,我已经修复了一些东西,现在没有错误了,但是没有按照选择的marca选择字段。

标签: javascript php mysql ajax codeigniter


【解决方案1】:

这是错误的

$this->db->order_by($this->primary_key, 'DESC');
$this->db->get_where('marca', array('id' => $this->input->post('hdn_id_marca')));
$query = $this->db->get('marca');

您同时使用get_where()get()。应该是

$this->db->order_by($this->primary_key, 'DESC');
$query = $this->db->get_where('marca', array('id' => $this->input->post('hdn_id_marca')));

接下来,

改变

return $data;

echo json_encode($data);

在ajax成功,

success: function(data) {
    var a = JSON.parse(data);
    alert(a.id);
}

【讨论】:

  • 有没有办法调试它?它没有任何区别,仍然显示每个值。也许我忘了别的东西?
  • 你删除了getget_where??
  • 我完全按照你说的做了。
  • 好吧,我已经通过更改select 对其进行了测试,并且hidden 字段的value 根据所选的marca id 进行了更改,所以我猜这是正确的。
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 2017-09-20
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多