如何分别获取输入标签和选项标签并加载div和内部选择

时间:2017-05-27 10:03:49

标签: javascript jquery html codeigniter

我有空<div><select>想要在ajax响应之后加载div中的标签和输入标签以及选择内的option。我该怎么做?

这是回复 enter image description here

我想单独提取<div>&amp;的标签和输入。提取<select>的选项。 这是我的代码:

<div class="form-group">
<select id="student" name="student" class="form-control" onchange="getName(this.value)">

</select>
</div>
<div name="state" id="state">



</div> 

<script>
function getschool() {
var st = $('#school option:selected').val();

$.ajax({
    type: "POST",
    url: '<?php echo base_url();?>Choice/student',
    type: 'POST',
        data: {
            // fname: fname
            st:st



        },
        dataType: 'text',
        success: function(data) {
            alert(data);
            //alert(data[0].id);
            // for(k in data){
                // alert(data[k].id);
                $('#student').html(data);
               //$('#state').html(data.input);
                $('#state').html(data);
            // }
            //$('body').html(data);
            // console.log(data);
            //alert(data);
            //alert("Succesful ");
            //location.reload(false);
            //window.location.href = "http://localhost:8080/choicelaunch/Choice/order_fullmenu";
        }

});
}

</script>

在这样做之后,我得到div中的所有内容,如:enter image description here

另外,我从我的Codeigniter控制器那里获得了这个响应:

public function student()
    {
        $sch= $this->input->post('st');
        $swt=$this->data['school'] = $this->catering_model->selstu($sch);

        //echo(json_encode( $swt));
        if(!empty($swt))
        {
            if(($sch == "1"))
            {
                echo ('<label class="checkbox-inline">
                <input type="checkbox" id="offer1" name="offer" value="Monday">Monday
                </label>');

            }
            foreach($swt as $in)
            {

                echo ('<option value="'.$in->id.'" select="select">'.$in->fname.'&nbsp;'.'</option>');


            }

        }


        //var_dump($data['school']);
    }

我知道为什么。我只需要复选框而不是非复选框。

2 个答案:

答案 0 :(得分:1)

您可以使用filter()

$('#student').html($(data).filter('option'));
$('#state').html($(data).filter('label'));

答案 1 :(得分:0)

我知道这有点棘手。但是,试试这个。

为什么不尝试在div内容之间添加分隔符并在控制器上选择内容。这就是我的意思:

    public function student()
    {
        $sch= $this->input->post('st');
        $swt=$this->data['school'] = $this->catering_model->selstu($sch);

        //echo(json_encode( $swt));
        if(!empty($swt))
        {
            if(($sch == "1"))
            {
                echo ('<label class="checkbox-inline">
                <input type="checkbox" id="offer1" name="offer" value="Monday">Monday
                </label>');

            }
            echo "@@"; //the separator
            foreach($swt as $in)
            {

                echo ('<option value="'.$in->id.'" select="select">'.$in->fname.'&nbsp;'.'</option>');


            }

然后,在成功接收数据后,尝试将其拆分。

    success: function(data) {
        alert(data);
        var res = data.split("@@");
        $('#student').html(res[0]);
        $('#state').html(res[1]);
    }