2016-04-24 3 views
1

Я пытаюсь удалить элемент из корзины с помощью Ajax с javascript, но у меня проблемы с передачей параметров контроллеру. Параметры в контроллере равны нулю.Как передать параметры контроллеру с помощью 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, так что добавьте параметры в запросе после URL:

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

и переходят в нуль (а не строка запроса) при вызове метода .send:

xmlHttp.send(null); 

Кроме того, заголовок «application/x-www-form-urlencoded» используется только при отправке сериализованных параметров, но с использованием POST, поэтому удалите строку xmlHttp.setRequestHeader.

Подробнее: https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started

+1

Это решает мою проблему ~ Спасибо! – user5516371

Смежные вопросы