2016-05-04 8 views
1

私のコードに大文字と小文字があり、結果が表示されない、または動作しない場合、都市書式選択はまだ空白です。ここではHTMLは次のとおりです。Codeigniterのselect(ドロップダウンオプション値)でajaxを使用してAPIからデータを取得する方法は?

<div class="form-group"> 
    <label>Province</label> 
    <select class="form-control" name="province" id="province"> 

    <?php foreach($state_data->data as $sd){ ?> 
    <option id="<?php echo $sd->code; ?>" value="<?php echo $sd->code; ?>" <?php echo (isset($this->session->userdata))?(($this->session->userdata('session_state_code') == $sd->code)?"selected":""):"";?>> 
     <?php echo $sd->name ;?> 
    </option> 
    <?php } ?> 
    </select> 
</div> 
<div class="form-group" id="city_section"> 
    <label>City</label> 
    <select class="form-control" name="city" id="city"> 

    <?php foreach($city_data->data as $cd){ ?> 
    <option value="<?php echo $cd->code; ?>" <?php echo (isset($this->session->userdata))?(($this->session->userdata('session_city_code') == $cd->code)?"selected":""):"";?>> 
     <?php echo $cd->name ;?> 
    </option> 
    <?php } ?> 
    </select> 
</div> 

このコントローラからデータを取得するためにJavaScript:

$('#province').on('change', function() { 
     var id = $(this).val();; 
     $.ajax({ 
     type: "POST", 
     dataType: 'json', 
     url: "<?php echo base_url() ?>edit_profile/get_city", 
     data: { 
      id: $(this).val() 
     }, 
     success: function(data) { 
      $('select#city').html(''); 
      for (var i = 0; i < data.length; i++) { 
      $("<option />").val(data[i].code) 
       .text(data[i].name) 
       .appendTo($('select#city')); 
      } 
     } 
     }); 
    } 

と、このAPIからデータを取得するためのコントローラ:

public function get_city(){ 
    $m_url = URL_API; 
    $function = "get_location"; 
    $i = $_REQUEST['id']; 
    $url = $m_url . "/" . $function . "?" . "t=city" . "&" . "i=".$i; 
    $json_data = file_get_contents($url); 
    $data = json_decode($json_data); 
} 
+0

コンソールでエラーが発生しましたか? –

+0

いいえ、私は@ManinderpreetSinghを取得しません –

答えて

1

あなたの機能はありませんあなたが必要とするajaxに何かを返すecho json_decode

public function get_city(){ 
     $m_url = URL_API; 
     $function = "get_location"; 
     $i = $_REQUEST['id']; 
     $url = $m_url . "/" . $function . "?" . "t=city" . "&" . "i=".$i; 
     $json_data = file_get_contents($url); 
     echo $data = json_decode($json_data);// use echo here 
    } 
+0

私はエコーを追加しますが、同じ@ Saty –

+0

私のajaxについてはどうですか? –

0

json_decode()は必要ありません。$ json_dataを表示するだけです。これは、すでにfile_get_contents()によって文字列として返されているためです。

public function get_city(){ 

    $m_url = URL_API; 
    $function = "get_location"; 
    $i = $_REQUEST['id']; 
    $url = $m_url . "/" . $function . "?" . "t=city" . "&" . "i=".$i; 
    $json_data = file_get_contents($url); 
    echo $json_data; 


} 

戻されたデータをJSONオブジェクトに変換します。そして、それを使用する:

echo $json_data;を持つ
success: function(data) { 
     var jsonObj = JSON.parse(data); 
     $('select#city').html(''); 
     for (var i = 0; i < jsonObj.length; i++) { 
     $("<option />").val(jsonObj[i].code) 
      .text(jsonObj[i].name) 
      .appendTo($('select#city')); 
     } 
    } 
+0

あなたのアドバイスを追加しましたが、何も効果がありません。しかし、ありがとう。私のアヤックスはどうですか? –

+0

返された文字列をJSONオブジェクトに変換します。あなたはそれを逃しています。 –

+0

変換済みですがまだ空です –

0

を、今、あなたはあなたの要求のエラー応答が表示されますように、あなたのAjaxでerrorコールバックを入れてみてください。そこからプロセス内で何が問題になったのかを知ることができます。

error: function(err){ 
    console.log(err.responseText); 
} 
+0

エラーの結果はありません/レスポンスフレンド。代わりに、 'データのアドバイス –

+0

に感謝:{ ID:() $(この).val}、' 'データでなければなりません:あなたは' VARのID = $持っているので、 '、:{ID 'ID'} (this).val() 'となります。 – graceth

関連する問題