2015-12-14 160 views
1

我在Spring MVC中收到错误的Ajax调用请求错误。请参考下面的代码,并在此恳请评论:获取错误的请求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; 
} 

我也包括杰克逊1.7.4在lib文件夹和<mvc:annotation-driven/>罐子我的servlet。

请指导我解决这个问题。

+0

您是否还在使用Spring Security? –

+0

不,我不使用任何这样的东西 –

+0

可能'ids'是未定义的。在发出请求之前检查它的值。 – Bnrdo

回答

0

你在告诉String,ticketId是一个请求参数。因此,春季在名称为ticketId的查询字符串中搜索参数。

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

你有2个optinos。

  1. 更改调用,并将您的ticketid作为查询字符串的一部分。
  2. 更改Spring方法,以便它可以接收ticketid作为正文请求的一部分。您可以使用@RequestBody而不是@RequestParam。
+0

根据[documentation](http://api.jquery.com/jquery.getjson/),将数据(第二个参数)作为查询字符串的一部分发送到服务器。它不写入请求主体。 – Bnrdo

+0

“使用请求发送到服务器的普通对象或字符串。”它没有说作为查询字符串的一部分 – reos

+0

“发送到服务器的数据作为查询字符串附加到URL上,如果数据参数的值是普通对象,则将其转换为字符串并进行url编码然后再附加到URL中。“请阅读整节。 – Bnrdo