Ajax POST с Spring-MVC - PullRequest
       9

Ajax POST с Spring-MVC

0 голосов
/ 18 января 2019

В эти дни у меня была проблема, и я пока не мог ее решить. У меня есть корзина, и она работает с JQuery. Поэтому я получаю товары в петиции GET (я использую Spring-MVC), а затем добавляю товары в корзину с помощью jQuery. Наконец, я хочу отправить эти данные (я имею в виду, идентификатор продукта, количество и т. Д.) На мой Spring Controller, и я попытался использовать петицию Ajax. Ниже я покажу вам код. Обратите внимание, что если я использую $ (селектор) .click (), я могу показать данные в контроллере, но если я использую $ (селектор) .submit (), у меня много проблем. Я думаю, что я действительно не понимаю, как это работает, поэтому мне нужна помощь.

Контроллер

@PostMapping(value = "/carrito",
        consumes = {"application/json", MediaType.APPLICATION_FORM_URLENCODED_VALUE}, 
        produces = "application/json")
        //produces = {MediaType.APPLICATION_ATOM_XML_VALUE, MediaType.APPLICATION_JSON_VALUE})
public @ResponseBody String confirmaCarrito(@RequestBody ProdAJAX prod) { 


    System.out.println("X: " + prod.getX());
    System.out.println("Y: " + prod.getY());

    return "redirect:/home";
}

HTML

    <form th:action="@{/pedido/carrito}" th:object="${cliente}" method="post">

<!-- Product list -->


<div class="col-sm-4">
            <h2>Carrito</h2>
            <!-- Elementos del carrito -->
            <ul id="carrito" class="list-group"></ul>
            <hr></hr>

            <!-- Precio total -->
            <p class="text-right">
                Total: <span id="total"></span>&euro;
            </p>

            <input type="submit" value="Confirmar" id="confirmaCarrito"
                class="btn btn-crear"></input>
        </div>
    </div>

</form> 

JQuery

<script>
$(document).ready(function() {

    let i = 0;
    $(".addButton").click(function() {

        var miNodo = $("<li></li>");
        var miProd = $("<span></span>")
        var miCant = $("<input></input>");
        var miPrecio = $("<span></span>");

        miNodo.attr("posicion", i);
        miNodo.attr("class", "nodo list-group-item text-right");

        miProd.attr("name", "prod");
        miProd.attr("idProd", $(this).attr("id"));
        miProd.text($(this).attr("name"));

        miCant.attr("idCant", $(this).attr("id"));
        miCant.attr("type", "number");
        miCant.attr("class", "cant");
        miCant.attr("value", 1);
        miCant.attr("name", "cant");

        miPrecio.attr("idPrecio", $(this).attr("id"));

        miPrecio.text($(this).attr("precio"));

        miNodo.append(miProd);
        miNodo.append(miCant);
        miNodo.append(miPrecio);
        $("#carrito").append(miNodo);
        i = i + 1;

    });

    $("#confirmaCarrito").submit(function(event) {

        //data["id"] = $(".nodo").attr("idNodo");
        //data["id"] = 5;
        //data["cant"] = $(".cant").attr("value");

        //var prod = $("prod").attr("idProd");
        //var cant = $(".cant").val();
        //var data = idProd.concat(",", cant);

        var data = {
            "x" : 100,
            "y" : 200
        };

        $.ajax({
            type : "POST",
            contentType : "application/json; charset=UTF-8",
            url : "/pedido/carrito",
            data : JSON.stringify(data),
            dataType : "json",
            success : function(data) {

                if (data == "SUCCESS") {
                    alert(data);
                } else {
                    alert(data);
                }

            }
        // timeout: 600000,
        //async : true,

        });

        event.preventDefault();

    });

});

На самом деле, если я использую .click (), это работает, но если я использую .submit (), это не работает. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...