如何使用ajax和javascript将参数传递给控制器?
问题描述:
我想从使用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;
}
}
动作和项目是在控制器空。
任何人都可以帮助解决这个问题吗?
答
你发送一个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
解决了我的问题〜谢谢! – user5516371