在spring框架中使用jquery-ajax发送数据时出现400错误请求

400 bad request while sending data with jquery ajax in spring framework?

本文关键字:数据 请求 错误 框架 spring jquery-ajax      更新时间:2023-09-26

我从jquery ajax提交json数据时遇到一些问题。我在谷歌上搜索过一些类似的问题,但没有一个对我有效

            $.ajax({
                type : "POST",
                contentType : "application/json",
                url : "save-routes",
                data : JSON.stringify(routeObject),
                dataType : 'json',
                timeout : 100000,
                success : function(status) {
                    console.log("SUCCESS ADDING ROUTE DATA");
                    return status;
                },
                error : function(e) {
                    console.log("ERROR WHILE ADDING ROUTE DATA");
                    return false;
                },
                done : function(e) {
                    console.log("DONE");
                    //return true;
                }
            });

routeBejct Json格式:

{name:"value", data:["value1","value2"...]}

弹簧控制器:

    @JsonView(Views.Public.class)
    @RequestMapping(value = "/save-routes", method = RequestMethod.POST)
    public @ResponseBody boolean loadRoutes(@RequestBody Route route) {
        //codes
        return status;
    }

我一直收到这个错误:

POST http://localhost:8181/SYBusWebApp/save-route 400 Bad Request 6ms

路线类别:

public class Route {
    @JsonView(Views.Public.class)
    private String name;
    @JsonView(Views.Public.class)
    private ArrayList<stop> routeStops;
    private String updatedRouteName;
    private ArrayList<String> addedRouteStopNames;
    //getters and setters
}

停止等级:

public class Stop {
    @JsonView(Views.Public.class)
    private String name;
    @JsonView(Views.Public.class)
    private float latitude;
    @JsonView(Views.Public.class)
    private float longitude;
    private String updatedName; 
//getters and setters
}

您的Route对象似乎与JSON负载不匹配。

{name:"value", data:["value1","value2"...]}

在您的情况下,我希望在routeStops:的JSON负载中有一个嵌套的Stop对象集合

{
   name:"value", 
   routeStops:[
       {
         "name":"test",
         "latitude": 3.124
       },
       ....
   ],
   ...
}