2016-08-24 42 views
-1

我有这个功能,以产生这样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}”,“ {编号:5106,文本:KAB邦利} “”{编号:5108,文本:KAB布莱伦} “”{编号:5104,文本:KAB吉安雅} “”{编号:5101,文本:KAB 。JEMBRANA} “”{编号:5107,文本:KAB卡朗阿森} “”{编号:5105,文本:KAB KLUNGKUNG} “”{编号:5102,文本:KAB达巴南} “”{ID :5171,文本:登巴萨市}“]

,我想这些价值观上面会在我的下拉列表中显示: 下面的代码:

<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> 

我如何解决这个问题。

回答

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数组这可能是非常接近你所需要的。

+0

如果我使用'数据类型:“json''所有数据会变成into' [对象的对象]'。我刚发现'select2'使用数组format' ID:123,名称:abc'所以,如果我改变''id_kab' id'和'name' into' name',并把数据在选择2功能会工作。但这些数据是从数据库中我怎么格式化,所以'select2'可以接受? – HealMee

+0

@HealMee这就是为什么我用'的console.log()''而不是警报()'。关于数据的内容,你只需要循环在PHP你'$ kota'变量和正确的键右边的元素添加到新阵列。该阵列可以'json_encode'并发送回的JavaScript。 – jeroen

+0

我用'的console.log()'和更新了我的代码,现在我需要摆脱'“''这之间。” {'从生成的数据。我该怎么做呢? – HealMee

0

,你需要指定JSON AJAX请求数据类型你会需要返回从PHP的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"); 
        } 
       }); 
0

不知道很多关于PHP的,但对我来说代码:

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

正在使用JSP页面的jQuery的js(的Java Web项目)中选择2下拉列表中选择一个值。