Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro ao obter response do metodo AJAX

Boa noite galera, ao tentar obter a variável response do método ajax,

 postQuantidade(data) {
        // requisição Ajax para Url 
        $.ajax({
            url: '/pedido/UpdateQuantidade',
            type: 'post',
            contentType: 'application/json',
            data: JSON.stringify(data) // converte o array em JSON
        }).done(function (response) { // função done (ou seja, depois que finalizar a requisição)
            let itemPedido = response.itemPedido;
            //let linhaDoItem = $("[item-id=" + itemPedido.Id + "]")

            //linhaDoItem.find('input').val(itemPedido.Quantidade);

            debugger;
       });

a variavel está como undefined, não consigo recuperar as informações do método UpdateQuantidadeResponse, alguém passou por isso?

3 respostas

Olá, André Carlos

Para entendermos melhor o problema, você pode postar aqui o código da action UpdateQuantidade para darmos uma olhada? Obrigado!

Ola Marcelo, claro que posso, ainda não consegui descobrir, baixei o projeto do curso e está funcionando normalmente, agora no meu código não consegui identificar o problema.

Segue os arquivos:

 public UpdateQuantidadeResponse UpdateQuantidade(ItemPedido itemPedido)
        {
            // obtem o item do pedido do banco
            var itemPedidoDB = itemPedidoRepository.GetItemPedidoId(itemPedido.Id);

            if (itemPedidoDB != null)
            {
                itemPedidoDB.AtualizaQuantidade(itemPedido.Quantidade);

                contexto.SaveChanges();

                var carrinhoViewModel = new CarrinhoViewModel(GetPedido().Itens);

                return new UpdateQuantidadeResponse(itemPedidoDB, carrinhoViewModel);
            }

            throw new ArgumentException("Item do pedido não encontrado");
        }
solução!

Pessoal, descobri o que era o problema, erro foi totalmente meu, um simples detalhe:

using CasaDoCodigo.Models.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace CasaDoCodigo.Models
{
    public class UpdateQuantidadeResponse
    {
        public UpdateQuantidadeResponse(ItemPedido itemPedido, CarrinhoViewModel carrinhoViewModel)
        {
            ItemPedido = itemPedido;
            CarrinhoViewModel = carrinhoViewModel;
        }

        ItemPedido ItemPedido { get; }
        CarrinhoViewModel CarrinhoViewModel { get; }
    }
}

O que estava ocorrendo é que no atributo da classe estava sem o modificador de acesso "public", sendo assim não estava conseguindo obter o response pelo javascript

using CasaDoCodigo.Models.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace CasaDoCodigo.Models
{
    public class UpdateQuantidadeResponse
    {
        public UpdateQuantidadeResponse(ItemPedido itemPedido, CarrinhoViewModel carrinhoViewModel)
        {
            ItemPedido = itemPedido;
            CarrinhoViewModel = carrinhoViewModel;
        }

        public ItemPedido ItemPedido { get; }
        public CarrinhoViewModel CarrinhoViewModel { get; }
    }
}

Obrigado!