Java控制器是否可以将属性传递给成功的ajax调用?

时间:2017-08-18 03:28:30

标签: javascript java ajax

正如标题所说,我想将一个变量从控制器传递给成功的ajax调用函数,但它可能吗?例如:

我有一个带有这样一个控制器的Java类:

@RequestMapping(value = "checkFruit", method = RequestMethod.POST)
@ResponseBody
public ModelAndView checkFruit(HttpServletRequest request, String fruitInput) {

    ModelAndView modelAndView = new ModelAndView(); 

    if (fruitInput.equals("apple")) {
        modelAndView.addObject("fruitType", 1); //This is what I want to pass to the success ajax call.
    } else if (fruitInput.equals("orange") {
        modelAndView.addObject("fruitType", 2); //This is what I want to pass to the success ajax call.
    }

    modelAndView.setViewName("fruitGarden");
    return modelAndView;
}

带有ajax调用的jsp视图如下:

$("#checkFruitBtn").click(function () {
    var fruitInput = $("input[name=fruitInput]").val();
    $.ajax({
        type: 'POST',
        url: 'checkFruit',
        data: 'fruitInput=' + fruitInput,
        success: function () {
            var fruitType= ${fruitType}; //I want to get the attribule of that "fruitType" variable set in the controller. But this is where things went wrong.
            if (fruitType == 1) {
                alert("This is an apple.");
            } else if (fruitType == 2) {
                alert("This is an orange.");
            }
            window.location.href = "/someURL";
        }
    });
});

在上面的例子中。当我点击按钮" checkFruitBtn"时,它会向控制器发送ajax调用" checkFruit"。在这个控制器中,我将设置一个变量" fruitType"将它发送给成功的ajax调用函数。在这个成功的ajax调用函数中,我将获得" fruitType"的值。变量检查它并根据其值显示警告信息......但是,事情并没有按计划进行。

我的问题是,是否有可能获得该值" fruitType"变量?我已经搜索了一种获取方法,但我仍然无法找到适合我的方法。如果以前曾问过这个问题,我非常抱歉。

提前致谢!

2 个答案:

答案 0 :(得分:0)

使用注释@ResponseBody,Springmvc使用HttpMessageConverter将返回的对象转换为响应主体。

ModelAndView通常涉及命令对象和视图名称。

因此您可以将ModelAndView与Jsp页面一起使用,然后使用el来评估命令对象值。要使用@ResponseBody,Springmvc只返回字符串。

答案 1 :(得分:0)

  $.ajax({
                type: 'POST',
                url: password_url,
                data: '',
                dataType: 'json',
                success: function(response){

                var g = response;
                var x= g.fruitType; //Now you can do the operation based on the output.