select2没有正确显示数组数据

时间:2016-08-24 09:10:55

标签: javascript php ajax select2

我有这个功能来生成数据

public function ajax_get_kota($idProv='')
{
    $kota = $this->registrasi_model->get_nama_kota($idProv);
    // echo json_encode(array_values($kota));
    $data = array();
    foreach($kota as $k){
        $data[] = '{id:'.$k->id_kab.','.'text:'.$k->nama.'}';
        // echo "{id: $k->id_kab, text: '$k->nama'}";
    }
    echo json_encode(array_values($data));
}

返回这样的值

  

[" {ID:5103,文本:KAB。 BADUNG}"," {id:5106,text:KAB。 BANGLI}"," {id:5108,text:KAB。 BULELENG}"," {id:5104,text:KAB。 GIANYAR}"," {id:5101,text:KAB。 JEMBRANA}"," {id:5107,text:KAB。 KARANGASEM}"," {id:5105,text:KAB。 KLUNGKUNG}"," {id:5102,text:KAB。 TABANAN}"," {id:5171,text:KOTA DENPASAR}"]

我希望上面的那些值会显示在我的下拉列表中: 这是代码:

<div class="form-group form-group-sm has-feedback <?php set_validation_style('Kota')?>">        
    <?php echo form_label('Kota / Kabupaten', 'kota', array('class' => 'control-label col-sm-2')) ?>
    <div class="col-sm-3">
       <?php
            $atribut_kota = 'class="form-control dropKota"';
            echo form_dropdown('Kota', $namaKota, $values->Kota, $atribut_kota);
            set_validation_icon('Kota');
        ?>
    </div>
    <?php if (form_error('Kota')) : ?>
        <div class="col-sm-9 col-sm-offset-3">
            <?php echo form_error('Kota', '<span class="help-block">', '</span>');?>
        </div>
    <?php endif ?>

    <script>
        $(document).ready(function () {
            $(".dropProv").on("change", function(){
                var idProv = $(this).val();
                var baseUrl = '<?php echo base_url(); ?>program/administrasi/registrasi/ajax_get_kota/'+idProv;
                var kota = [];
                $.ajax({
                    url: baseUrl,
                    data: kota,
                    success: function(datas){
                        console.log(datas);
                        $(".dropKota").select2({
                            placeholder: "Pilih Kota",
                            data: datas //the data loads here
                        });                        },
                    error: function (xhr, ajaxOptions, thrownError) {
                        alert("error");
                    }
                });
            });
        });
    </script>
</div>

我该如何解决这个问题。

3 个答案:

答案 0 :(得分:0)

我不知道什么样的对象/数组select2期望,但它看起来像你从php发送的json,没有得到解析。

首先,你应该改变它:

$.ajax({
                url: baseUrl,
                // set the dataType so that jQuery will parse the json automatically
                dataType: 'json',
                data: kota,
                success: function(datas){
                    console.log(datas);
                    ...

现在您将向select2发送一个对象数组,这可能非常接近您的需要。

答案 1 :(得分:0)

您需要从PHP返回JSON响应,并且需要在AJAX请求中指定JSON数据类型。

所以你的PHP代码看起来像这样,

public function ajax_get_kota($idProv='')
{
    $kota = $this->registrasi_model->get_nama_kota($idProv);
    $data = array();
    header('Content-Type: application/json');
    echo json_encode(array_values($kota));
}

AJAX看起来像这样,

$.ajax({
                    url: baseUrl,
                    data: kota,
                    dataType: 'json',
                    success: function(datas){
                        // alert(datas);
                        $(".dropKota").select2({
                            placeholder: "Pilih Kota",
                            data: datas //the data loads here
                        });                        },
                    error: function (xhr, ajaxOptions, thrownError) {
                        alert("error");
                    }
                });

答案 2 :(得分:0)

不太了解php,但对我来说代码:

$("#dropdownId").select2("val", "your value");

正在jsp页面(java web项目)中使用jquery js在select2下拉列表中选择一个值。