2012-04-02 94 views
0

私は、ユーザーの郵便番号からアドレスのリストを表示するAJAXリクエストを持っています。ユーザーが選択するためのドロップダウンリストに表示されます。私は以下のPHP、JS ansのrepsonseを示している。JSON応答からデータを抽出する方法

私はcURLを使用してJSON応答を持っています。私はCIとjQueryを使用しています。

私はレスポンスから必要なデータを抽出し、HTMLオプションタグに配置します。 IDはオプション値タグに入り、説明は開始タグと終了タグの間に入ります。ここで

は私のJSです:ここでは

$.get(
    '<?=site_url('api/postcode') ?>', 
    { 
     'postcode' : postcode 
    }, 
    function(data) { 

     $('#loader-address').hide(); 

     // Show the dropdown list   
     var list = '<option value="">Choose...</option>'; 

     // Create address options from JSON 

    }, 
    'json' 
); 


は私のPHPの関数である。ここでは

public function get_by_postcode($postcode) 
{ 
    /* Build up the URL to send the request to. */ 
    $sURL = "http://services.Postcodeanywhere.co.uk/json.aspx?"; 
    $sURL .= "account_code=" . urlencode($this->pca->account); 
    $sURL .= "&license_code=" . urlencode($this->pca->license); 
    $sURL .= "&action=lookup"; 
    $sURL .= "&type=by_Postcode"; 
    $sURL .= "&postcode=" . urlencode($postcode); 


    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch,CURLOPT_URL,$sURL); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    $ContentsFetch = curl_exec($ch); 
    curl_close($ch); 
    return $ContentsFetch; 
} 


は、JSONのresponeです:

"[{\"id\":\"5378660.00\",\"seq\":\"0\",\"description\":\"1 Carrington Close Croydon\"},\r\n{\"id\":\"5378661.00\",\"seq\":\"1\",\"description\":\"2 Carrington Close Croydon\"},\r\n{\"id\":\"5378662.00\",\"seq\":\"2\",\"description\":\"3 Carrington Close Croydon\"},\r\n{\"id\":\"5378663.00\",\"seq\":\"3\",\"description\":\"4 Carrington Close Croydon\"},\r\n{\"id\":\"5378664.00\",\"seq\":\"4\",\"description\":\"5 Carrington Close Croydon\"},\r\n{\"id\":\"5378665.00\",\"seq\":\"5\",\"description\":\"6 Carrington Close Croydon\"},\r\n{\"id\":\"5378666.00\",\"seq\":\"6\",\"description\":\"7 Carrington Close Croydon\"},\r\n{\"id\":\"5378667.00\",\"seq\":\"7\",\"description\":\"8 Carrington Close Croydon\"}]\r\n" 

答えて

0

使用getJSONhttp://api.jquery.com/jQuery.getJSON/

$.getJSON(url, param ,function(data) { //url - return json page 

    $('#loader-address').hide(); 

    var list = '<option value="">Choose...</option>'; 
    $.each(data, function() { 
     list += '<option value="'+this.id+'">'+this.description+'</option>'; 
    }); 
}; 

およびJavaScriptでのJSONレスポンスが"[{"id":"5378660.00","seq":"0","description":....でなければなりません。エスケープ・クォートは不要

0

あなたはdata.idを使用することができますy私たちのjavascript。 jQuery $.each()関数と組み合わせてデータを反復処理します。そのような:

$.get(
    '<?=site_url('api/postcode') ?>', 
    { 
     'postcode' : postcode 
    }, 
    function(data) { 

     $('#loader-address').hide(); 

     // Show the dropdown list   
     var list = '<option value="">Choose...</option>'; 
     $.each(data, function(key, value) { 
      list += '<option value="'+value.id+'">'+value.description+'</option>'; 
     }); 

     // Create address options from JSON 

    }, 
    'json' 
); 
関連する問題