2016-08-18 11 views
1

CodeIgniterフォームを補充する際に問題があります。jQueryでcodeigniterフォームを補充

現在、私はそれをやっている:

ビュー:

 <div class="line_grid" style="height: 45px; overflow: visible;"> 
      <div class="g_5"> 
       <div class="g_3 label"><?php echo form_label('Partenaire commercial : ', 'partenaire'); ?></div> 
       <div class="g_9"><?php echo form_dropdown('partenaire', $partenaires,$preselect_partenaire,'onchange = "loadNewCommerciaux(this)" id="partenaire" class="chzn-select" title="" '); ?></div> 
       <?php echo form_error('partenaire'); ?> 
      </div> 
     </div> 
     <div class="line_grid" style="height: 45px; overflow: visible;"> 
      <div class="g_5"> 
       <div class="g_3 label"><?php echo form_label('Commercial : ', 'commercial'); ?></div> 
       <div class="g_3"><?php echo form_dropdown('commercial',$commerciaux,set_value('commercial',$this->form_data->commercial),'id="commercial" class="chzn-select" title="" placeholder="Sélectionner..."'); ?></div> 
       <?php echo form_error('commercial'); ?> 
      </div> 
      <div class="g_5"> 
       <div class="g_3 label"><?php echo form_label('Interlocuteur principal : ', 'principal'); ?></div> 
       <div class="g_3"><?php echo form_dropdown('principal', $intervenants,set_value('principal',$this->form_data->principal),'id="principal" class="chzn-select" title="" placeholder="Sélectionner..."'); ?></div> 
       <?php echo form_error('principal'); ?> 
      </div> 

     </div> 

Javascriptを:

<script> 
function loadNewCommerciaux(that){ 
    urlRequest = window.location.protocol.toString() +"//" + 
           window.location.hostname.toString() + 
           window.location.port.toString() + "/cartel/projets/refillPartenairesCommerciaux/" + that.value 
    $.post(
     urlRequest, 

     function(data){ 
      alert(result); 
      //$("#commercial").load("contenu.html"); 
     }, 

     'text' 
    ); 
} 

をコントローラー:

function refillPartenairesCommerciaux($id_structure){ 

    $partenaires = array(); 
    $contacts = $this->db->query('SELECT id, prenom, nom FROM contacts WHERE structure='.$id_structure)->result(); 
    foreach($contacts as $partenaire){ 
     $partenaires[$partenaire->id] = $partenaire->prenom . ' ' . $partenaire->nom; 
    } 

    echo json_encode($partenaires); 

} 

私は私のform_dropdown "商用"を補充したいと思いますが、私はそれをどうするか考えていません。 現在、Ajaxリクエストにより新しいクエリを実行でき、データが返されます。ページ全体をリロードせずに、クエリによって返された新しいデータでform_dropdownを補充するにはどうすればよいですか?

ありがとうございます、悪い英語のために申し訳ありません。

+0

Elobarate問題と何の詳細を読み込みます –

+0

私はこれにフォームヘルパーを使用します。あなたの見解では、 '<?php echo set_value(" ")?>'を使用することができ、誤って提出した後にフォームが補充されます。詳細情報:http://www.codeigniter.com/user_guide/helpers/form_helper.html – StackerStan

答えて

0

このお試しください:コントローラで :JavaScriptで

function refillPartenairesCommerciaux($id_structure){ 

    $html = ''; 
    $contacts = $this->db->query('SELECT id, prenom, nom FROM contacts WHERE structure='.$id_structure)->result(); 
    foreach($contacts as $partenaire){ 
     $html .= '<option value="'.$partenaire->id.'">'.$partenaire->prenom . ' ' . $partenaire->nom.'</option>'; 
    } 

    echo json_encode($html); 

} 

デコード応答(データを)して、selectタグ

$("#commercial").html(JSON.parse(data)); 
関連する問題