簡體   English   中英

如何將json對象從java傳遞給javascript?

[英]how to pass json object from java to javascript?

我試圖將數據從spring控制器傳遞給javascript,但沒有運氣。 我應該使用ajax來做到這一點嗎? 請問你能給我一些關於這個怎么做的提示? 什么是最好的方法?

在我的控制器中,我嘗試傳遞數據:

@RequestMapping(value = "/map", method = RequestMethod.GET)
public String map(ModelMap model) {

...

model.addAttribute("trackpoints", json);


return "map";

}

其中json是一個包含以下內容的gson對象(JsonObject):

{"trackpoints":[{"latitude":52.390556,"longitude":16.920295},
{"latitude":52.390606,"longitude":16.920262}]}

在我的jsp文件中我有:

<script type="text/javascript">

var myJSON = {};

myJSON = ${trackpoints};

document.writeln(myJSON.trackpoints);

</script>

但結果是:

[object Object],[object Object]

我更詳細地解釋一下:>

我想使用谷歌地圖api顯示地圖和繪制路徑協調從許多lat,longs。 我認為json會比list更好,但我可能錯了。

我嘗試從文檔調整代碼 - 在下面的代碼中我嘗試用循環替換硬編碼坐標,並從json對象替換值。

<script type="text/javascript">
function initialize() {
    var myLatLng = new google.maps.LatLng(0, -180);
    var myOptions = {
        zoom : 3,
        center : myLatLng,
        mapTypeId : google.maps.MapTypeId.TERRAIN
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"),
            myOptions);
    var flightPlanCoordinates = [
            new google.maps.LatLng(37.772323, -122.214897),
            new google.maps.LatLng(21.291982, -157.821856),
            new google.maps.LatLng(-18.142599, 178.431),
            new google.maps.LatLng(-27.46758, 153.027892) ];
    var flightPath = new google.maps.Polyline({
        path : flightPlanCoordinates,
        strokeColor : "#FF0000",
        strokeOpacity : 1.0,
        strokeWeight : 2
    });

    flightPath.setMap(map);
}
</script>

我希望現在更清楚了:)

myJSON.trackpoints是一個包含兩個對象的數組。 如果你想把它寫成HTML,你可以這樣做:

function writeCoordinates(coords) {
    document.writeln('<div>lat = ' + coords.latitude);
    document.writeln(', lon = ' + coords.longitude + '</div>');
}

int len = myJSON.trackpoints.length;
for (int i = 0; i < len; i++) {
    writeCoordinates(myJSON.trackpoints[i]);
}

BTW:當您使用AJAX請求時,JSON非常有用,但對於“普通”請求,最好將普通Java對象放入模型中,例如:

彈簧控制器:

List<Coordinate> trackpoints = ...
model.addAttribute("trackpoints", trackpoints);

JSP

<c:forEach items="${trackpoints}" var="coord">
    <div>lat = ${coord.latitude}, lon = ${coord.longitude}</div>
</c:forEach>

給定, Coordinate類具有方法getLatitude()getLongitude() 通過使用像Jackson這樣的JSON編碼器和ContentNegotiatingViewResolver ,Spring控制器中的該方法甚至可以用於“普通”和AJAX請求。

看看: http//jsfiddle.net/AHue8/4/

我想這里的內容是你需要指定你想要的trackpoint對象中的哪個元素,並且你可以控制它們在瀏覽器中的顯示方式。 由於“trackPoint”不是原始數據類型(它是具有2個數據元素緯度和經度的對象),因此瀏覽器不知道如何解釋它,因此您必須告訴它如何。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM