В эти дни у меня была проблема, и я пока не мог ее решить.
У меня есть корзина, и она работает с 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>€
</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 (), это не работает.
Спасибо!