Как передать раскрывающееся значение в ajax контроллер? - PullRequest
0 голосов
/ 20 января 2020

Это мой выпадающий список:

enter image description here

Я посылаю раскрывающееся значение в ajax функцию контроллера, чтобы получить некоторое значение. Но значение неправильно передан, и я не могу найти ошибку;

Мой ajax код:

<script type="text/javascript">
$(function() {
    $('.states').change(function(){
        $id = $('.states').val();        
        $.ajax({
            type    : "POST",
            url     : "<?php echo base_url();?>Reports/Fetch_Item",
            data    :{id:$(this).val()},                        
            success : function (data) {
                alert(data);
                var obj=jQuery.parseJSON(data);
            }           
        });
    });
});

</script> 

Мой код контроллера;

public function Fetch_Item(){
    $name = $this->input->post('id');
    $result = $this->db->query("SELECT * FROM acc_master WHERE accName = '$name'")->row();
    echo json_encode($result);
}

Фронт выпадающий вниз коробка:

<div id="item3">
Party Name Selection:
<select multiple="multiple" style="width:400px;height:205px;"  name="PName"id="Name" class="form-control states">   
<option value=""></option>
</select> 
<?php echo form_error('Area', '<div class="text-danger">', '</div>'); ?><br><br><br></div>

Раскрывающийся список ajax Код:

<script type="text/javascript">
$(document).ready(function(){
    $.ajax({
        type: "GET",
        url: "<?php echo base_url();?>Reports/get_countries1",
        data:{id:$(this).val()}, 
        beforeSend :function(){
        $('.states').find("option:eq(0)").html("Please wait..");
            },                         
        success: function (data) {
    $('.states').find("option:eq(0)").html("");
    var obj=jQuery.parseJSON(data);
    $(obj).each(function()
    {
        var option = $('<option />');
        option.attr('value', this.value).text(this.label);           
        $('.states').append(option);
    });  
}});
});
</script>

Ответы [ 2 ]

2 голосов
/ 20 января 2020

Можете ли вы попробовать это

<script type="text/javascript">
$(function() {
    $('.states').change(function(){
        var id = this.value;        
        $.ajax({
            type    : "POST",
            url     : "<?php echo base_url();?>Reports/Fetch_Item",
            data    :{'id':id,},                        
            success : function (data) {
                alert(data);
                var obj=jQuery.parseJSON(data);
            }           
        });
    });
});
</script>
1 голос
/ 20 января 2020

$(this).val() возвращает массив, вы должны изменить свой внутренний код для обработки массива.

Примерно так:

public function Fetch_Item(){
    $name = implode(",", $this->input->post('id'));
    $result = $this->db->query("SELECT * FROM acc_master WHERE accName in ('$name')")->rows();
    echo json_encode($result);
}

Примечание: Fetch_Item methon sql вернет несколько результатов, так что вы должны справиться с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...