2016-08-24 23 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下拉列表中選擇一個值。