Ajax没有看到Post Controller

I made ajax request, but it don't see Post Controller, which need to handle request. But if i change POST to GET - Get Controller handle ajax request.

My Post Controller:

@RestController
public class AddProductController extends AbstractController {
    private static final long serialVersionUID = 5023867691534917359L;
    private static final Logger LOGGER = LoggerFactory.getLogger(AddProductController.class);

    @PostMapping("/ajax/json/product/add")
    public ShoppingCart addProductToCart(HttpServletRequest req,
                                 @RequestParam(name = "idProduct") String idProduct,
                                 @RequestParam(name = "count") String count)  {

        ProductForm productForm = createProductForm(idProduct, count); 
        ShoppingCart shoppingCart = SessionUtil.getCurrentShoppingCart(req); // Get ShoppingCart
        orderService.addProductToShoppingCart(productForm, shoppingCart); // Add product in Cart
        return shoppingCart;
    }

Ajax request:

var addProductToCart = function (){
        var idProduct = $('#addProductPopup').attr('data-id-product');
        var count = $('#addProductPopup .count').val();
        var btn = $('#addToCart');
        convertButtonToLoader(btn, 'btn-primary');
        $.ajax({
            url : '/ajax/json/product/add',
            method : 'POST',
            data: {
                idProduct : idProduct,
                count : count
            },
            success : function(data) {
                $('#currentShoppingCart .total-count').text(data.totalCount);
                $('#currentShoppingCart .total-cost').text(data.totalCost);
                $('#currentShoppingCart').removeClass('hidden');
                convertLoaderToButton(btn, 'btn-primary', addProductToCart);
                $('#addProductPopup').modal('hide');
            },
            error : function(xhr) {
                convertLoaderToButton(btn, 'btn-primary', addProductToCart);
                if (xhr.status == 400) {
                    alert(xhr.responseJSON.message);
                } else {
                    alert('Не сработала JS функция добавления в коризну');
                }
            }
        });
    };   

Whats wrong with my PostController?

Change your ajax like below. You do not need to send data because you are not expecting data in body in your post controller.

$.ajax({
            url : '/ajax/json/product/add?idProduct='+idProduct+'&count='+count,
            method : 'POST',
            success : function(data) {
                $('#currentShoppingCart .total-count').text(data.totalCount);
                $('#currentShoppingCart .total-cost').text(data.totalCost);
                $('#currentShoppingCart').removeClass('hidden');
                convertLoaderToButton(btn, 'btn-primary', addProductToCart);
                $('#addProductPopup').modal('hide');
            },
            error : function(xhr) {
                convertLoaderToButton(btn, 'btn-primary', addProductToCart);
                if (xhr.status == 400) {
                    alert(xhr.responseJSON.message);
                } else {
                    alert('Не сработала JS функция добавления в коризну');
                }
            }
        });

Jquery.ajax does not encode POST data for you automatically the way that it does for GET data. Jquery expects your data to be pre-formatted to append to the request body to be sent directly across the wire.

A solution is to use jQuery.param function to build a query string that process POST requests expect.

Change data object in you method to the format below, and hopefully, it will work.

    data: jQuery.param({ idProduct : idProduct, count : count }),
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8'