2012-04-02 29 views
0

Ich habe eine AJAX-Anfrage, um eine Liste von Adressen aus der Benutzer-Postleitzahl anzuzeigen. Es zeigt sie in einer Dropdown-Liste an, die der Benutzer auswählen kann. Ich habe die PHP, JS und Antwort unten gezeigt.So extrahieren Sie Daten aus einer JSON-Antwort

Ich habe die JSON-Antwort mit cURL. Ich benutze CI und jQuery.

Wie extrahiere ich die Daten, die ich brauche aus der Antwort und legen Sie sie in ein HTML-Optionen-Tags. Die ID wird in das Optionswert-Tag übernommen und die Beschreibung wird zwischen den öffnenden und schließenden Options-Tags angezeigt.

Hier ist meine 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' 
); 


Hier meine PHP-Funktion ist:

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; 
} 


Hier ist die 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" 

Antwort

0

Verwenden 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>'; 
    }); 
}; 

Und Ihre Json Antwort in Javascript muss "[{"id":"5378660.00","seq":"0","description":.... sein. Escape-Angebot muss nicht

0

Sie data.id verwenden können in y unser Javascript. Kombinieren Sie mit der Funktion jQuery $.each(), um über die Daten zu iterieren. Wie so:

$.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' 
); 
Verwandte Themen