2016-04-24 110 views
1

我想從使用JavaScript的Ajax的購物車中刪除一個項目,但是我無法將參數傳遞給控制器​​。控制器中的參數爲空。如何使用ajax和javascript將參數傳遞給控制器​​?

我的JavaScript代碼顯示如下:

function removeRow(itemId, rowID){ 
     if (xmlHttp == null) 
     { 
      alert("Your browser does not support AJAX!"); 
      return; 
     } 
     var query = "action=remove&item=" + itemId; 

     /* alert(query); */ 
     xmlHttp.onreadystatechange = function stateChanged() 
     { 
      if (xmlHttp.readyState == 4) 
      { 
       var row = document.getElementById(rowID); 
       row.parentNode.removeChild(row); 
      } 
     }; 
     xmlHttp.open("GET", "addTo.htm", true); 
     xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
     xmlHttp.send(query); 
     return false; 
     /* var row = document.getElementById(rowID); 
     row.parentNode.removeChild(row); */ 

}

我的控制器的代碼顯示如下:

@Controller 

@RequestMapping("/addTo.htm") 
public class AddToController{ 
    @RequestMapping(method=RequestMethod.GET) 
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { 
     HttpSession session = request.getSession(); 
     String action = request.getParameter("action"); 
     System.out.println(action); 
     ModelAndView mv = new ModelAndView(); 
     ArrayList<Item> cart; 
     if(action.equals("remove")){ 
      System.out.println("cart size is" + cart.size()); 
      Long itemId = Long.parseLong(request.getParameter("item")); 
      ItemDAO itemDao= new ItemDAO(); 
      Item item = itemDao.get(itemId); 
      cart.remove(item); 
      System.out.println(cart.size()); 
     } 
     return mv; 
    } 
} 

動作和項目是在控制器空。

任何人都可以幫助解決這個問題嗎?

回答

1

你發送一個GET請求,所以您的網址後面添加參數的查詢:

xmlHttp.open("GET", "addTo.htm?" + query, true); 

,並傳入null(而不是你的查詢字符串)調用方法。發送時:

xmlHttp.send(null); 

此外,「application/x-www-form-urlencoded」標題僅在發送序列化參數但使用POST時使用,因此請刪除xmlHttp.setRequestHeader行。

更多信息:https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started

+1

解決了我的問題〜謝謝! – user5516371

相關問題