在jquery / javascript中访问httpservletRequest属性

时间:2014-09-13 19:35:20

标签: jquery ajax spring-mvc

我正在使用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中访问它,但它没有用。任何帮助赞赏。感谢。

2 个答案:

答案 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
}