Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Вывести массив Json (https://javascript.ru/forum/jquery/35319-vyvesti-massiv-json.html)

Shadow_Blade 07.02.2013 13:25

Вывести массив Json
 
Добрый день, не могу добиться вывода адреса. Сильно ногами не бейте нуба :)

Код:

<!DOCTYPE html>

<html>
    <head>
        <script type="text/javascript" src="Script.js" ></script>
        <script type="text/javascript">
            function test()
            {
                var items = [];
                $.getJSON("http://api.4geo.ru/rest/geocode/search.json?query=Сургут,%20мира,%205",
            function (data)
                {
                    $.each(data.items, function (key, i)
                    {
                        items.push('<li id="' + key + '">' + i + '</li>');
                        });
                        $('<ul/>', {
                            'class1': 'list',
                            html: items.join('')
                        }).appendTo('body');
                    });
            }

        </script>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body onload="test()">
     
    </body>
</html>


Hoshinokoe 07.02.2013 13:34

Shadow_Blade,

Данные, которые возвращает сервис в другом формате. А так почти все правильно :)
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">
        function test() {
            var items = [];
            $.getJSON("http://api.4geo.ru/rest/geocode/search.json?query=Сургут,%20мира,%205",
        function (data) {
            $.each(data.result.geoobject, function (index, value) {
                items.push('<li id="' + value.text + '">' + index + '</li>');
            });
            $('<ul/>', {
                'class1': 'list',
                html: items.join('')
            }).appendTo('body');
        });
        }

    </script>
    <meta charset="utf-8" />
    <title></title>
</head>
<body onload="test()">
</body>
</html>

P.S. Не забывай, что нельзя делать ajax-вызов на другой домен.

Shadow_Blade 07.02.2013 13:51

Цитата:

Сообщение от Hoshinokoe (Сообщение 232241)
Shadow_Blade,

Данные, которые возвращает сервис в другом формате. А так почти все правильно :)
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">
        function test() {
            var items = [];
            $.getJSON("http://api.4geo.ru/rest/geocode/search.json?query=Сургут,%20мира,%205",
        function (data) {
            $.each(data.result.geoobject, function (index, value) {
                items.push('<li id="' + value.text + '">' + index + '</li>');
            });
            $('<ul/>', {
                'class1': 'list',
                html: items.join('')
            }).appendTo('body');
        });
        }

    </script>
    <meta charset="utf-8" />
    <title></title>
</head>
<body onload="test()">
</body>
</html>

P.S. Не забывай, что нельзя делать ajax-вызов на другой домен.

А подробнее можно насчёт $.each(data.result.geoobject, function (index, value), не получается у меня

Hoshinokoe 07.02.2013 14:16

Цитата:

Сообщение от Shadow_Blade (Сообщение 232246)
А подробнее можно насчёт $.each(data.result.geoobject, function (index, value), не получается у меня

Что не получается ???

Если твой сайт на другом домене, то нужно использовать jsonp. Вот пример:
<!DOCTYPE html>
<html>
<head>
    <meta charset="windows-1251" />
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">
        function test() {
            $.getJSON("http://api.4geo.ru/rest/geocode/search.jsonp?query=Сургут,%20мира,%205&jsoncallback=?",
                search);
        }

        function search(data) {
            var items = [];

            $.each(data.result.geoobject, function (index, value) {
                items.push('<li id="' + index + '">' + value.text + '</li>');
            });
            $('<ul/>', {
                'class1': 'list',
                html: items.join('')
            }).appendTo('body');
        }

    </script>
    <meta charset="utf-8" />
    <title></title>
</head>
<body onload="test()">
</body>
</html>

Shadow_Blade 07.02.2013 14:17

Спасибо, надеюсь я тупить так не буду больше

Shadow_Blade 07.02.2013 15:43

Дело в том что мне нужно отобразить не text а street и buildingNumber буду очень сильно благодарен если распишешь. По идее это так?
$.each(data.result.geoobject , function (index, value) {
items.push('<li id="' + index + '">' + value.details.buildingType + '</li>');

Hoshinokoe 07.02.2013 16:11

Shadow_Blade,

посмотри для начала что возвращает сервис. http://i.imgur.com/asTZ4Gz.png?1

Тебе нужно:
value.details.adresses[0].buildingType
value.details.adresses[0].street


Часовой пояс GMT +3, время: 05:42.