Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > передать массив объектов в js или ajax


Автор: dementiev 15.12.2009, 11:56
Всем привет! Как в javascript передать массив из сервлета?
У меня есть страница с картой, на которой стоят чекбоксы : "банки", "аптеки" и тд.
Я хочу по нажатии этой кнопки брать из базы координаты всех банков и отображать их. Просто отображение маркера работает нормально, проблема в том, что не знаю, как в js передать массив. 
Мне подойдёт любая помощь по js либо ajax.
Заранее спасибо!

Вот кусок работающего кода на js, который просто отображает два маркера.
Я в сервлете получаю коллекцию/массив координат+картинок, как мне их отобразить на карте динамически?
Код

<body onload="initialize()" bgcolor="whitesmoke">
.....
.....
    <div id="map_canvas" style="width: 700px; height: 400px"></div>
</body>


Код

    <script type="text/javascript">
        var mapstraction;
        function initialize() {
            // initialise the map with your choice of API
            mapstraction = new mxn.Mapstraction('map_canvas', 'openlayers');

            // create a lat/lon object
            var myPoint = new mxn.LatLonPoint(53.9, 27.5666667);

            // display the map centered on a latitude and longitude (Google zoom levels)
            mapstraction.setCenterAndZoom(myPoint, 11);

            /* args = {
             *     pan:      true,
             *     zoom:     'large' || 'small',
             *     overview: true,
             *     scale:    true,
             *     map_type: true,
             * }
             */
            mapstraction.addControls({
                pan: true,       //стрелки в стороны на карте
                zoom: 'large', // + и - на карте
                //overview: true,  //справа внизу мини-карта
                map_type: false  //справа вверху на карте выбор осм и тд - не надо
            });
            // create a marker positioned at a lat/lon
            my_marker = new mxn.Marker(myPoint);
            my_marker.setIcon('http://mapstraction.com/icon.gif');

            mapstraction.addMarker(new mxn.Marker(new mxn.LatLonPoint(53.9, 27.6)));

            // add a label to the marker
            my_marker.setLabel("<blink>Hello!</blink>");
            var text = "<b>Be Happy!</b>";

            // add info bubble to the marker
            my_marker.setInfoBubble(text);

            advancedMarker();
            // display marker
            mapstraction.addMarker(my_marker);
            var foo = function removeMarker() {
                mapstraction.removeMarker(my_marker);
            };
        }

        function advancedMarker() {
            mapstraction.addMarker(new mxn.Marker(new mxn.LatLonPoint(53.2, 24.5666667)), {
                infoBubble : "Advanced Marker",
                label : "tooltip",
                date : "new Date()",
                marker : 4,
                iconShadow: "http://mapufacture.com/images/providers/blank.png",
                iconShadowSize : [0,0],
                icon : "http://assets1.mapufacture.com/images/markers/usgs_marker.png",
                iconSize : [20,20],
                draggable : false,
                hover : true
            });
        }
    </script>


Автор: MisterCleric 15.12.2009, 12:31
Привет. Если ты используешь аяксовые запросы, то должно быть усе просто:
сформируй руками на сервере строку, представляющую js-массив, и положи ее в респонз, а на клиенте просто разбери этот результат например через eval(). А еще можно запаковать твой респонз в такой формат как JSON, при вызове аякс-запроса указать, что ты ожидаешь contentType=json.

Автор: mbasil 16.12.2009, 08:04
Под JSON на их сайте имеется Java библиотека, что облегчает задачу

Автор: dementiev 16.12.2009, 13:26
да, всем спасибо, сделал.
В сервлете:
Код


                ArrayList<Auto> autoList = (ArrayList<Auto>) dao.getAllAuto();
                JSONArray jsonA = JSONArray.fromObject(autoList);
                System.out.println(jsonA);
                request.setAttribute("auto", jsonA);
                request.getRequestDispatcher("index.jsp").forward(request, response);


в js:
Код

var text = "<b>" + autoJson[i].descr + "</b> <a href='" + autoJson[i].href + "'> More info</a>";
Код



Автор: garbuz 16.12.2009, 16:30
dementiev, какую библиотеку использовали для парсинга объектов JSON?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)