我正在使用Spring-MVC并通过ajax将数据发布到控制器,并且根据控制器的业务逻辑,我将返回不同的视图。 我被卡住的地方是,我想区分jquery中控制器返回什么样的视图,因为我们无法访问jquery中的服务器对象,所以这就产生了问题。 下面是我的控制器和jquery的代码。
控制器 -
@RequestMapping(value = "/mappedUrl", method = RequestMethod.POST)
public ModelAndView someMethod(User dummyUser, HttpServletRequest request) {
//Business logic here, Boolean status is returned according to it
if (status) {
return new ModelAndView("viewOne");
} else {
request.setAttribute("info", "viewTwo");
return new ModelAndView("viewTwo");
}
}
ajax call -
function submit(formId, Url) {
var value = $("#" + formId).serialize();
$.ajax({
'type' : "POST",
'cache' : false,
'contentType' : 'application/x-www-form-urlencoded; charset=UTF-8',
'async' : false,
'url' : Url,
'data' : value,
'success' : function(data) {
//rendering view
}
});
//NEED to determine here that which view was returned
}
尝试在控制器中设置属性并在jQuery中访问它,但它没有用。任何帮助赞赏。感谢。
答案 0 :(得分:0)
您无法在jquery或javascript中访问服务器的不同范围对象。你应该以json或xml的形式返回你的响应,并在jquery或javascript中使用你的结果。 Spring MVC 3与Jackson API完美结合,将您的对象转换为json
检查以下示例
package com.mkyong.common.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.mkyong.common.model.Shop;
@Controller
@RequestMapping("/kfc/brands")
public class JSONController {
@RequestMapping(value="{name}", method = RequestMethod.GET)
public @ResponseBody Shop getShopInJSON(@PathVariable String name) {
Shop shop = new Shop();
shop.setName(name);
shop.setStaffName(new String[]{"mkyong1", "mkyong2"});
return shop;
}
}
检查以下链接中的详细示例 http://www.mkyong.com/spring-mvc/spring-3-mvc-and-json-example/
答案 1 :(得分:0)
if part
中将唯一对象设置为请求属性并在jsp(作为隐藏字段)中将其用于通过ajax返回的数据来区分视图。 / p>
之后,只需使用jquery(
)访问该字段if ($('#somehiddenElement').text().trim()) {
// if that request attribute is set then code in this block runs
}