2012-03-12 12 views
5

मैं वसंत नियंत्रक से जावास्क्रिप्ट तक डेटा पास करने की कोशिश कर रहा हूं लेकिन बिना किसी किस्मत के। क्या मुझे ऐसा करने के लिए AJAX का उपयोग करना चाहिए? कृपया आप मुझे कुछ संकेत दे सकते हैं कि यह कैसे करें? सबसे अच्छा तरीका क्या है?जावा से जावास्क्रिप्ट से जेसन ऑब्जेक्ट को कैसे पास किया जाए?

मेरी नियंत्रक में मैं पारित करने के लिए कोशिश डेटा:

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

... 

model.addAttribute("trackpoints", json); 


return "map"; 

} 

जहां json एक gson वस्तु (JSONObject) युक्त है: मेरे jsp फ़ाइल में

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

मेरे पास है:

<script type="text/javascript"> 

var myJSON = {}; 

myJSON = ${trackpoints}; 

document.writeln(myJSON.trackpoints); 

</script> 

लेकिन परिणाम यह है:

[object Object],[object Object] 

मैं और अधिक विस्तार में इस की व्याख्या:>

मैं नक्शा प्रदर्शित और अक्षां कई से समन्वित पथ आरेखित, देशांतर करने के लिए उपयोग गूगल मैप्स एपीआई चाहते हैं। मुझे लगता है कि जेसन सूची से बेहतर होगा, लेकिन मैं गलत हो सकता हूं।

मैं प्रलेखन से कोड समायोजित करने का प्रयास करता हूं - नीचे दिए गए कोड में मैं हार्डकोडेड निर्देशांक को लूप के साथ प्रतिस्थापित करने की कोशिश करता हूं, और जेसन ऑब्जेक्ट से मानों को प्रतिस्थापित करता हूं।

<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> 

मैं आशा है कि यह अब और अधिक स्पष्ट है :)

उत्तर

1

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: JSON वास्तव में उपयोगी होता है जब आप AJAX अनुरोध का उपयोग कर रहे हैं, लेकिन "सामान्य" के लिए अनुरोध करता है यह सादे जावा में वस्तुओं डाल करने के लिए बेहतर है मॉडल, उदाहरण के लिए:

स्प्रिंग नियंत्रक:

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() विधियां हैं। एक JSON एन्कोडर का उपयोग करके, वसंत नियंत्रक में उस विधि का उपयोग "सामान्य" और AJAX अनुरोध दोनों के लिए भी किया जा सकता है, जैसे Jackson, और ContentNegotiatingViewResolver

0

पर एक नज़र डालें: http://jsfiddle.net/AHue8/4/

मैं यहाँ लगता है कि ले दूर है कि आप ट्रैकबिंदु वस्तु में जो तत्व आप चाहते हैं निर्दिष्ट करने की आवश्यकता है और आप countrol कैसे उन ब्राउज़र में प्रदर्शित होते हैं। चूंकि "ट्रैकपॉइंट" एक आदिम डेटा प्रकार नहीं है (यह 2 डेटा तत्व अक्षांश और देशांतर के साथ एक वस्तु है), ब्राउजर को यह नहीं पता कि इसे कैसे समझना है, इसलिए आपको यह बताना होगा कि कैसे।

संबंधित मुद्दे