2017-09-18 12 views
-2

ここでは、このようなコードを実行したが、対応するフィールドに結果が表示されていないので、プロジェクトをビルドするためにmaterial design liteを使用しています。 ここに私のコードは、一見Codeigniterを使用して材料設計でajaxを呼び出します

<script> 
$('#type').change(function(){ 
    var type=$('#type').val(); 
    alert(type); 
    var url='<?php echo base_url(); ?>admin/vehicle/ajax_vehicle'; 
    alert(url); 
    $.post(url, {type:type}, function(data) 
    { 
    alert(); 
    componentHandler.upgradeDom();  
    $('#vehicle').html(data); 
    }); 
}); 
</script> 

を持ってください。ここ

public function ajax_vehicle() 
{ 
    $data['vehicle']=$this->Vehicle_model->view_available_vehicles($_POST['type']); 
    //var_dump($data['vehicle']); 
    $this->load->view('admin/vehicle/ajax_vehicle',$data); 
} 

はここに私のビューページ

<div class="input-field col s12"> 
     <select required name="vehicle_id" id="vehicle"> 
     <option value="" selected>Select</option> 


     </select> 
     <label>Select Vehicle</label> 
</div> 

var type=$('#type').val();が値を取得しているである私のコントローラです。私はこれが私のajax_vehicleあるこの

<select required name="vehicle_id"> 
    <option value="">Select</option> 
    <option value="42" >bullet</option> 
    <option value="41" >pulsar</option> 
</select> 

のような結果を得、それを慰めるとき は、選びましタイプを選択した後、この内容を表示する必要があります。あなたが国家としてdataがのその結果、

<select required name="vehicle_id"> 
    <option value="">Select</option> 
    <option value="42" >bullet</option> 
    <option value="41" >pulsar</option> 
</select> 

が含まれている場合

<select required name="vehicle_id"> 
<option value="">Select</option> 
<?php if(empty($assign_vehicle_info)){ 
     if (!empty($vehicle)) { 
     foreach ($vehicle as $veh) {?> 
<option value="<?= $veh->id ?>"<?php if (!empty($assign_vehicle_info)) { echo $assign_vehicle_info->vehicle_id == $veh->id ? 'selected' : ''; } ?>><?= $veh->name ?></option> 
<?php }}}?> 
</select> 

は実際に

+0

どのようなデバッグを行っていますか? ajax呼び出しは成功しますか? 'data'の中で値を返しますか?いくつかの基本的なデバッグが必要です。あなたは基本的に効果的だと言いました。それはいくつかの場所で失敗する可能性がありますが、特定のエラー情報がなくても推測できます。いくつかの可能性を生み出すための十分な未知数があります。 – ADyson

+0

'base_url()'は最後に '/'を追加しますか?そうでない場合は、追加してください! – delboy1978uk

+0

ajaxリクエストは機能していますか? Webブラウザのネットワークパネルを使用して確認できます。 – srimaln91

答えて

0

を解決するために私を助けるwork.pleaeためにこれに追加される追加何の事か分かりません$('#vehicle').html(data);

<select required name="vehicle_id" id="vehicle"> 
    <select required name="vehicle_id"> 
    <option value="">Select</option> 
    <option value="42" >bullet</option> 
    <option value="41" >pulsar</option> 
    </select> 
</select> 

です無意味で無効なHTML html()関数は、要素そのものではなく、選択した要素の内部 HTMLを置き換えます。

は、次の2つのオプションがあります。

1)サーバの出力(すなわちajax_vehicleビューを変更する)ので、それだけで<option>要素を返します - だけでなく<select>の外側部分を返す必要はありませんが。したがって、AJAX呼び出しから返されたdataは(たとえば)含まれている必要があるでしょう:

<option value="">Select</option> 
<option value="42" >bullet</option> 
<option value="41" >pulsar</option> 

は、その後、あなたが以前のように$('#vehicle').html(data);を継続して使用することができます。

OR

2)を使用replaceWith、すなわち$("#vehicle").replaceWith(data);代わりに.html()。しかし、この場合には<select>id="vehicle"のマークアップが含まれるようにサーバー出力を修正する必要があります。そうしないと、「車両」という要素が存在しなくなるため、このコードはもう一度動作しません。また、 "vehicle"要素に設定されたイベントハンドラなどがある場合は、要素全体を置き換えたため、再作成する必要があることにも留意してください。 http://api.jquery.com/replacewith/

私の意見では、オプション1が良い選択です。

+0

私は両方のケースをテストしたが、残念ながら何も得られない –

+0

私はちょうどタグではありません –

+0

"何も得られません"は、エラーメッセージまたは問題の説明ではありません。あなたのページを見て、具体的にしてください。ブラウザの開発者ツールで、コードを実行した後の "車両"要素の外観をチェックすることができます。私の最初のオプションを使用した後、それには何が含まれていますか?新しいオプションだけが含まれているはずです。 – ADyson

関連する問題