Codeigniter Ajax根据其他选择值在选择框中插入值

时间:2016-05-27 10:01:57

标签: jquery ajax codeigniter

我有两个select框。第一个人的价值如下。

Select Boxes

我的MySQL表如下所示。

MySQL Table

如果有人从第一个General Stream框中选择select,则第二个select框选项将类似于...

<option value="1">Honours</option>
<option value="2">General</option>

但是,如果有人从第一个Vocational框中选择select,则第二个select框选项将类似于...

<option value="2">General</option>

在我的controller做过这个......

function get_coursetype()
{
    $r=$this->input->post("coursetype");
    $_SESSION['coursetype']=$r;
    //print json_encode($_SESSION['coursetype']);
    if($r=='Honours'){
        $qry = $this->db->query('SELECT * FROM course');
        $data = array_shift($qry->result_array());
        echo json_encode($data['curs']);
    } else {
        $qry = $this->db->query('SELECT * FROM course WHERE curs="General"');
        $data = array_shift($qry->result_array());
        echo json_encode($data['curs']);
    }
}

在ajax中,我已经做到了......

$(function(){ // start of doc ready.
   $("#CourseType").change(function(e){
   e.preventDefault();  // stops the jump when an anchor clicked.
   var coursetype = $(this).val(); // anchors do have text not values.

  $.ajax({
    url: 'index.php?/admission/get_coursetype',
    data: {'coursetype': coursetype}, // change this to send js object
    type: "post",
    success: function(data){

        loc = data;
        $('#course').empty();
        $('#course').show();
        $.each(loc,function(data){
            $('#course').append($("<option></option>").attr("value",data).text(data));
        });
    }
  });
   });
});

显示错误...... error_msg

我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

甚至很难整个场景都是一团糟,我不明白你想用array_shift实现什么 - 试试这个

function get_coursetype()
{
    $r=$this->input->post("coursetype");
    $_SESSION['coursetype']=$r;
    //print json_encode($_SESSION['coursetype']);
    if($r=='1'){
        $qry = $this->db->query('SELECT * FROM course');
        $data = $qry->result_array();
    } else {
        $qry = $this->db->query('SELECT * FROM course WHERE curs="General"');
        $data = $qry->result_array();
    }
    echo json_encode($data);
}

在你的ajax查询中只需在你的每个循环中使用你的mysql键

$(function()
{ // start of doc ready.
    $("#CourseType").change(function(e)
    {
        e.preventDefault();  // stops the jump when an anchor clicked.
        var coursetype = $(this).val(); // anchors do have text not values.

        $.ajax(
        {
            url: 'index.php?/admission/get_coursetype',
            data: {'coursetype': coursetype}, // change this to send js object
            type: "post",
            success: function(data)
            {
                loc = data;
                $('#course').empty();
                $('#course').show();
                $.each(loc,function(data){
                    $('#course').append($("<option></option>").attr("value",data.id).text(data.curs));
                });
            }
        });
   });
});