[英]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.