@artemfisher

Как обработать запрос ajax jQuery в Spring?

Добрый день.

Передаю запрос со страницы на сервер через jQuery $.post(). Данные уходят, но возвращается внутренняя ошибка сервера. Т.е. данные не обрабатываются корректно. Не могу понять в чем проблема.

<script>
$('#purchase_form').on('submit', function(event){	
	
	event.preventDefault();
	
	var $form = $( this );
	product = $form.find( "input[name='productId']" ).val();
    url = $form.attr('action');
	
	var posting = $.post( url, { productid: product } );
	
  	posting.done(function( data ) {  		  
  		$('#purchase').empty().html("<p>SUCCESS</p>");
	  });
  	
  	posting.fail(function( data ) {  		  
  		$('#purchase').empty().html("<p>FAIL</p>");
	  });
}); 	  	
</script>


контроллер:

@PostMapping("/addtobasket")	
public String addToBasket(@RequestParam("product") int productId, HttpSession session)
	{					
		List<Product> productsInBasket = null;
		
		if(session.getAttribute("basket")!=null)		
			productsInBasket = (List<Product>) session.getAttribute("basket");
		else
			productsInBasket = new ArrayList<Product>();
		
		productsInBasket.add(repo.getProduct(productId));
		session.setAttribute("basket", productsInBasket);	
		
		return "redirect:/product/basket";
	}
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Krokochik
  1. Ключи JSON регистрозависимы: productId ≠ productid
  2. @RequestParam получает параметр не из тела запроса, а из url параметров (?productId=...)
  3. Проверьте, возможно ли приведение объекта из сессии к List<Product>

И самое главное: сервер ожидает обязательный параметр "product", но вы его не передаете
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы