Как извлечь данные из ответа JSON - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть запрос AJAX для отображения списка адресов из почтового индекса пользователя.Он будет отображать их в раскрывающемся списке для выбора пользователем.Я показал PHP, JS и ответ ниже.

У меня есть ответ JSON с использованием cURL.Я использую CI и jQuery.

Как извлечь нужные данные из ответа и поместить их в теги параметров HTML.Идентификатор будет указан в теге значения параметра, а описание будет находиться между открывающим и закрывающим тегами параметра.

Вот мой 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:

"[{\"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"

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Используйте getJSON http://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>';
   });
};

И ваш ответ json в javascript должен быть "[{"id":"5378660.00","seq":"0","description":.....Не нужно указывать Escape

0 голосов
/ 02 апреля 2012

Вы можете использовать data.id в своем 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'
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...