2015-12-14 155 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