[英]Redirect to another jsp (with response data) after ajax call
在调用成功执行后,我正在使用ajax调用获得一些位置,我想将该数据传递给另一个jsp并在那里显示。 我的代码是
阿贾克斯电话
$(".savebutton").click(function(){
$.ajax({
url: "<c:url value='/findPlaces' />",
type: 'POST',
data:{
preferences : preferences
},
success: function(response)
{
console.log(response);
window.location.href = "places";;
},
error: function(xhr, ajaxOptions, thrownError) {
alert('Error');
}
});
});
控制器动作
@RequestMapping(method = RequestMethod.POST, value = "/findPlaces")
public ModelAndView findRecommnededPlaces(HttpServletRequest request) {
Map< String, Integer> userPreferences = new HashMap< String, Integer>();
Map< String, Integer> sortedUserPreferences = new HashMap< String, Integer>();
userPreferences.put("Museum", Integer.parseInt(request.getParameter("preferences[Museum]")));
userPreferences.put("Night Life", Integer.parseInt(request.getParameter("preferences[Night Life]")));
userPreferences.put("Food", Integer.parseInt(request.getParameter("preferences[Food]")));
userService.scalePreferences(userPreferences);
sortedUserPreferences = userService.sortPreferences(userPreferences);
Map< String, Map< String, Integer >> categorisedPlaces = new HashMap< String, Map< String, Integer >>();
Map<String , List<String>> recommendedPlaces = new LinkedHashMap<String, List<String>>();
List<Place> places = searchService.search(new Location(SOURCE_LATITUDE,SOURCE_LONGITUDE), new Location(DEST_LATITUDE,DEST_LONGITUDE));
categorisedPlaces = placesService.categorize(places);
recommendedPlaces = placesService.getRecommendedPlaces(sortedUserPreferences, categorisedPlaces);
ModelAndView model = new ModelAndView("places");
model.addObject("recommendedPlaces", recommendedPlaces);
return model;
}
places.jsp
<div id="content">
<c:forEach var="entry" items="${recommendedPlaces}">
Cat: ${entry.key} <br/>
Places: ${entry.value}<br>
</c:forEach>
</div>
我如何重定向到place.jsp并将recommndedPlaces传递到那里,目前在ajax响应中,我正在获取整个html页面
我不明白您为什么要在AJAX
进行调用,因为您毕竟想将用户重定向到另一个页面...无论如何,要以JSON
而不是HTML
页面的JSON
获取recommendedPlaces
的@ResponseBody
,请使用@ResponseBody
批注并返回Map
而不是ModelAndView
对象:
@ResponseBody
@RequestMapping(method = RequestMethod.POST, value = "/findPlaces")
public Map<String, List<String>> findRecommnededPlaces(HttpServletRequest request) {
Map< String, Integer> userPreferences = new HashMap< String, Integer>();
Map< String, Integer> sortedUserPreferences = new HashMap< String, Integer>();
userPreferences.put("Museum", Integer.parseInt(request.getParameter("preferences[Museum]")));
userPreferences.put("Night Life", Integer.parseInt(request.getParameter("preferences[Night Life]")));
userPreferences.put("Food", Integer.parseInt(request.getParameter("preferences[Food]")));
userService.scalePreferences(userPreferences);
sortedUserPreferences = userService.sortPreferences(userPreferences);
Map< String, Map< String, Integer >> categorisedPlaces = new HashMap< String, Map< String, Integer >>();
Map<String , List<String>> recommendedPlaces = new LinkedHashMap<String, List<String>>();
List<Place> places = searchService.search(new Location(SOURCE_LATITUDE,SOURCE_LONGITUDE), new Location(DEST_LATITUDE,DEST_LONGITUDE));
categorisedPlaces = placesService.categorize(places);
recommendedPlaces = placesService.getRecommendedPlaces(sortedUserPreferences, categorisedPlaces);
return recommendedPlaces;
}
使用success
函数中的当前代码,在响应对象中返回的recommendedPlaces
将不会发送到places.jsp
页面。 您需要通过使用表单或将其添加到URL
将其添加到请求中。 这就是为什么我不太了解您为什么为此请求使用AJAX
的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.