带有 json 数据的 Jquery ajax 请求未到达 spring mvc Controller

标签 jquery json ajax spring-mvc

我需要使用 jquery 从 View 向 spring mvc Controller 发送数据。 Spring mvc 将在数据库中插入/更新这些值。我正在使用下面的代码

JQuery:

 var json = {"KPI" : visual, "partnerName": params['partnerName'],
 "partnerAddress" : params['partnerAddress'], "documentType" : params['documentType'], 
 "itemQualifier": getItemQualifier(),"itemIdentifiers" : params['itemIdentifiers'], 
 "currency" : getCurrency(), "sellSide": getSellSide()};

 $.ajax({                                                                   
        type: "POST",
        url: "/reports/savefilters",
        data: json,
        success: function(response){
                 alert('success: ' + response);
                },
        error: function(e){ 
                 alert('Error: ' + e);
                }
 });

Spring MVC Controller 代码:

@RequestMapping(value="/savefilters", method=RequestMethod.POST)
public String saveFilters(@RequestBody AnalyticsFilters filters){
    System.out.println("savefilters method in controller");
    System.out.println("KPI:"+filters.getKPI());
    if(filters.getPartnerName() != null && filters.getPartnerName().size()>0 ) System.out.println("partnerName:"+filters.getPartnerName().get(0));
    if(filters.getPartnerAddress() != null && filters.getPartnerAddress().size()>0 ) System.out.println("partnerAddress:"+filters.getPartnerAddress().get(0));
    if(filters.getDocumentType() != null && filters.getDocumentType().size()>0 ) System.out.println("documentType:"+filters.getDocumentType().get(0));
    System.out.println("itemQualifier:"+filters.getItemQualifier());
    if(filters.getItemIdentifiers() != null && filters.getItemIdentifiers().size()>0 ) System.out.println("itemIdentifiers:"+filters.getItemIdentifiers().get(0));
    System.out.println("currency:"+filters.getCurrency());
    System.out.println("sellSide:"+filters.getSellSide());
    new DashboardDisplayService().saveFilters();
    return "successful";
}

Post 请求正在转换为 Get 方法,无法到达 spring mvc Controller 。我尝试了不同的 ajax json 选项,如数据类型、内容类型等。如何确保 POST 请求不会更改为 GET 方法???

最佳答案

Ajax 方法返回 ResponseBody 中的消息。我修改了你的处理程序方法如下。

@RequestMapping(value="/savefilters", method=RequestMethod.POST)
public @ResponseBody String saveFilters(@RequestBody AnalyticsFilters filters){
...
}

关于带有 json 数据的 Jquery ajax 请求未到达 spring mvc Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38199791/

相关文章:

javascript - 当帖子正文内容为 JSON 但响应为 HTML 时,发出 jquery ajax post 请求

javascript - ScrollTop()函数,滚动时间

java - gson 嵌套自定义序列化器

json - 使用 Pyspark 在 Row 中访问 Dataframe 的 Row(嵌套 JSON)

php - 不确定如何在 Javascript/jQuery 中解析这个 PHP/JSON 对象

javascript - 数据表响应不适用于 ajax 调用

javascript - 无法使用新 nurl 中的附加信息将数据重新加载到 DataTable

jQuery 点击菜单

javascript - 未选中复选框时隐藏并清除文本框?

javascript - 如何将包含由 "="分隔的键值的字符串映射到 JSON?