Получите ответ от контроллера в Spring MVC для вызова ajax - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь передать ответ на ajax с контроллера. Дело в том, что я хочу обновлять общее количество каждый раз, когда удаляю продукт из корзины покупок, я пытался сделать это следующим образом, но он печатает весь HTML-код cart.jsp.

CartControler.java

package controller;

import dao.ProductDao;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.Item;
import model.pojo.Products;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class CartController {

    ModelAndView mav = new ModelAndView();

    @RequestMapping("/cart")
    public ModelAndView cart() {
        mav.setViewName("cart");
        return mav;
    } 

    @RequestMapping(value="/deleteItem")
    public String deleteItem(HttpServletRequest request, HttpServletResponse response) throws IOException {

        ProductDao prodDao = new ProductDao();
        int prodId = Integer.parseInt(request.getParameter("prodId"));

        HttpSession session = request.getSession(true);
        ArrayList<Item> items = session.getAttribute("cart") == null ? null : (ArrayList) session.getAttribute("cart");

        if(items != null) {
            for(Item i : items) {
                if(i.getProdId() == prodId) {
                    items.remove(i);
                    break;
                }
            }
        }

        double total = 0;
        for(Item i : items) {
            Products product = prodDao.getProduct(i.getProdId());
            total += i.getQuantity() * product.getPrice();
        }   

        response.getWriter().print(Math.round(total * 100.0) / 100.0);

        return "redirect:/cart";
    }    

}

cart.js

$(function() {
    $('tr #deleteItem').click(function(event) {
        event.preventDefault();
        var element = $(this);
        var prodId = element.parent().find('#itemId').text();
        $.ajax({
           url: 'deleteItem',
           type: 'post',
           data: {prodId : prodId},
           success: function(r){
               element.parent().parent().remove();
               var elementstable = $('#shop-table tr');
               if(elementstable.length <= 1) {
                   $('#cart-container').append("<h4>THERE ARE CURRENTLY NO ITEMS IN YOUR BASKET.</h4>");
               }
               $('#txt-total').text(r);
           }
        });
    });
});

Я не знаю, что не так и почему печатается весь html-код страницы вместо общего.

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