【问题标题】:Getting Bad request Error for Ajax call in Spring MVC在 Spring MVC 中获取 Ajax 调用的错误请求错误
【发布时间】:2015-12-14 12:43:06
【问题描述】:

我在 Spring MVC 中的 ajax 调用收到错误请求错误。请参考下面的代码并对此发表评论:

ajax 调用:

 $.getJSON('deletRowRequest', {ticketId: ids}, function(data){
        alert(data); 
 }); 

控制器:

@RequestMapping(value="/deletRowRequest", method = RequestMethod.GET)
public @ResponseBody List deleteRow(Model model, @RequestParam(value="ticketId")  String ticketId){
    String[] ticketString = ticketId.split(",");
    String flag = "deleteRow";
    List deleteTicketList =  new ArrayList();
    for(String tick :ticketString){
        deleteTicketList.add(tick);
    }
    System.out.println("list>> "+deleteTicketList);
    UpdateDB updatedb =  new UpdateDB();
    updatedb.updateTable(deleteTicketList, flag);
    List ticket =  updatedb.getRecordsFromDB();
    System.out.println(ticket);

    return ticket;
}

我还在 lib 文件夹中包含 Jackson 1.7.4 jar,在我的 servlet 中包含 <mvc:annotation-driven/>

请指导我解决这个问题。

【问题讨论】:

  • 你也在使用 Spring Security 吗?
  • 不,我没有使用任何类似的东西
  • 可能ids 未定义。在触发请求之前检查它的值。

标签: ajax spring spring-mvc


【解决方案1】:

您是在告诉 String,ticketId 是一个请求参数。所以 spring 在查询字符串中搜索一个名为 ticketId 的参数。

但是您将 ticketId 作为请求正文的一部分发送。

您有 2 个 optino。

  1. 更改调用,并将您的 ticketid 作为查询字符串的一部分。
  2. 更改 Spring 方法,使其可以接收作为正文请求的一部分的 ticketid。您可以使用@RequestBody 代替@RequestParam。

【讨论】:

  • 根据documentation,数据(第二个参数)作为查询字符串的一部分发送到服务器。它不会写入请求正文。
  • "随请求发送到服务器的普通对象或字符串。"它没有说是查询字符串的一部分
  • "发送到服务器的数据作为查询字符串附加到 URL。如果 data 参数的值是普通对象,则将其转换为字符串并在其之前进行 url 编码附加到 URL。”请阅读整个部分。
猜你喜欢
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
  • 2013-04-07
相关资源
最近更新 更多