【问题标题】:Having difficulties sending data from ajax to spring mvc controller难以将数据从 ajax 发送到 spring mvc 控制器
【发布时间】:2015-02-16 15:10:31
【问题描述】:

我的 ajax 代码如下所示:

function GetProjectlist() { 
            alert(department);
            var obj = { department : department};
            $.ajax({
                type: "POST",
                url:  "http://localhost:8080/MyApplication/getAllProjects",               
                data: JSON.stringify(obj),
                contentType: "application/json; charset=utf-8",         
                dataType: "json",
                success: OnGetProjectSuccess,
              error: OnGetProjectError
            });
           }

另一方面,我的控制器看起来像这样:

@RequestMapping(value = "/getAllProjects", method = RequestMethod.POST,headers = {"Content-type=application/json"}) 
    public @ResponseBody JsonJtableProjectListResponse getAllProjects(@RequestParam(value = "department", required = false) String department) {        

        System.out.print("department"+department);
        logger.info("Home Controller -getAllProjects");

.................................................. ...

当我在控制器中打印部门时,它为空。谁能告诉我如何将部门从 ajax 传递给控制器​​?

【问题讨论】:

    标签: ajax spring model-view-controller


    【解决方案1】:

    尝试使用 @RequestBody 注释而不是 @RequestParam 注释,因为您正在发送 json 数据。查看这篇文章了解如何操作。

    http://hmkcode.com/spring-mvc-json-json-to-java/

    对于简单的参数传递,使用类似下面的方法并像之前一样在服务器端使用@RequestParam。

    $.ajax({
                    type: "GET",
                    url:  "http://localhost:8080/MyApplication/getAllProjects",               
                    data: {department:department},
                    dataType: "json",
                    success: OnGetProjectSuccess,
                  error: OnGetProjectError
                });
    

    【讨论】:

    • @RequestBody 工作正常,我必须创建一个 java 对象来接收该值。我想知道这是否是将数据从 ajax 发送到 spring 控制器的唯一方法?我的意思是是否可以将单个数据(不是对象)从 ajax 发送到 spring 控制器。不管怎样,谢谢你的帮助。但是,我的以下问题的答案将不胜感激。 (P.s.在我的第一个ajax代码中,类型实际上是post)
    • 也就是说,如果您遵循 json 路线。如果它只是您想要传递的单个数据,您可以简单地传递它们,您可以简单地将它们设置为 data: { name: "John"} 在您的 get 方法中并且不指定任何 contentType。然后你可以简单地在服务器端使用@RequestParam。如果我的回答对您有帮助,请接受他们作为答案。
    • 我也添加了简单的实现。
    • 完美!!你的两个回答对我帮助很大。非常感谢
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 2017-02-01
    • 2016-09-21
    • 1970-01-01
    • 2019-08-28
    • 2016-07-22
    • 1970-01-01
    • 2012-09-09
    相关资源
    最近更新 更多