问题
在使用ajax提交数据到controller并且向跳转页面时,发现在controller中直接return一个页面的路径是无法跳转成功的,然后分宜了下原因之后好像是说ajax本省市不提供跳转功能的,虽然不知道这个原因对不对,但是还是需要找其他的方法来实现页面跳转。
解决方案
如果想要实现上述功能的话可以使用window.location.href=“xxx.do”,这样访问我们的controller之后可以实现页面跳转,并且放在modelMap中的数据也是可以在下一个页面中取到的。
下面放代码:
controller:
@RequestMapping("/articleDetails.do")
public String articleDetails(HttpServletResponse response,HttpServletRequest request,ModelMap modelMap){
String id = request.getParameter("id").toString();
ComArticle comArticle = new ComArticle();
comArticle.setId(Integer.parseInt(id));
ComArticle details = comArticleService.selectDetails(comArticle);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(details.getRcdtime());
modelMap.put("details", details);
modelMap.put("date", date);
return "comArticle/comArticleDetails";
}
js:
$.post("homepage.do", { recordStart: pageCode*date, pageSize: date } , function(data){
pageCode=pageCode+1;
if(data.length<5){
for(var i=0;i<data.length;i++ ){
var yy="20" + (data[i].rcdtime.year.toString().slice(1,3));
var mm=parseFloat(data[i].rcdtime.month)+1;
mm=mm.toString().length==1?"0"+mm:mm;
var dd=data[i].rcdtime.date;
dd=dd.toString().length==1?"0"+dd:dd;
var date=yy+"-"+mm+"-"+dd;
var html='<a id="'+data[i].id+'" οnclick="transferId(this)"><dl class="container"><dt><img src="'+data[i].headimage+'"/></dt><dd><h4 class="container"><span>'+data[i].comArticleCategory.categoryname+'</span></h4><p class="title">'+data[i].title+'</p><p class="date">'+date+'</p><p class="gary">'+data[i].description+'</p></dd></dl></a>';
$("#loadMore").before(html);
colorShow();
}
</pre><pre code_snippet_id="1628840" snippet_file_name="blog_20160330_5_144718" name="code" class="html"><pre name="code" class="html">function transferId(obj){
var id=obj.id;
$.ajax({
type: "GET",
success:function(data){
window.location.href = "articleDetails.do?id="+id;
}
});
}
解释
在上面的js中我想在var html中实现点击<a>标签跳转,这时候就需要用到window.location.href来实现