2016-04-24 19 views
1

Ich versuche, ein Element aus dem Warenkorb mit Ajax mit Javascript zu löschen, aber ich habe Probleme beim Übergeben von Parametern an den Controller. Die Parameter sind im Controller null.Wie Parameter mit Ajax und Javascript an den Controller übergeben?

Mein JavaScript-Code zeigt, wie unten:

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); */ 

}

Mein Controller-Code wie unten zeigt:

@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; 
    } 
} 

Die Aktion und Artikel in der Steuerung null sind.

Kann jemand mit diesem Problem helfen?

Antwort

1

Sie sendet eine GET-Anforderung, fügen so die Parameter als eine Abfrage nach dem URL:

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

und in null übergeben (und nicht Ihre Abfrage-String), wenn die .send Methode aufrufen:

Der Header "application/x-www-form-urlencoded" wird nur verwendet, wenn Sie serialisierte Parameter senden, aber POST verwenden. Entfernen Sie daher die Zeile xmlHttp.setRequestHeader.

Weitere Informationen: https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started

+1

Das ist mein Problem ~ Dank löst! – user5516371

Verwandte Themen