2016-04-24 122 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

相关问题