Return list for ajax

0

I have this function to load some data, however the need to load a list and include in a table the function was this way:

[HttpPost]
    public ActionResult CarregaProduto(string id)
    {
        try
        {
            var item = db.Produtos.Where(r => r.Codigo == id).Single();
            var produtoempresa = db.ProdutosEmpresas.Include(a => a.EmpresaProduto).Where(a => a.ProdutoEmpresa.Codigo == id).ToList();
            return Json(new
            {
                nomeProduto = item.nome,
                precoUnitario = item.PrecoCusto,
                id = item.Id,
                tipo = item.TipoProduto,
                Resultado = item.Codigo,
                listaEstoque = produtoempresa,
            });

        }
        catch { return Json(new { Resultado = 0 }); }
    }

The produtoempresa returns list , however how can I send the data and load it via HTML ?

Here is the function:

function CarregaProduto(id) {
    var url = "/PedidoVenda/CarregaProduto";

    $.ajax({
        url: url
        , data: { id: id }
        , type: "POST"
        , datatype: "html"
        , success: function (data) {
            //console.log(data.resultado);
            if (data.resultado != 0) {
                $("#descricaoproduto").html(data.nomeProduto);
                var preco = ((data.precoUnitario));
                $("#precocusto").val(parseFloat(preco).toFixed(2).replace(".", ","));
                $("#produtoid").val(data.id);
                $("#idproduto").val(data.resultado);
                $("#tipo").val(data.tipo);
            }
            else {
                $("#descricaoproduto").html("Não encontrado, pesquise novamente.");
                $("#precocusto").val("");
                $("#idproduto").val("");
            }
        }
    });
}

How can I load the list in this function CarregaProduto ? I was able to send, I put a console.log(data.listaEstoque); it is returning the data correctly:

Itriedaddingittoadiv,likethis:

vardvItems=$("#dvItems");
                dvItems.empty();
                $.each(data, function (i, item) {
                    var $tr = $('<li>').append(data.listaEstoque).appendTo(dvItems);
                });

But also does not work, how to load the data?

    
asked by anonymous 19.11.2018 / 12:30

1 answer

1

I do not quite understand your doubt. But, come on:

  • Return a JsonResult;
  • Scroll through the business product and add it to the list that will return in JSON;

Below was a solution I used here in the company to use GoogleChart by returning a Json:

    [WebMethod]
    public JsonResult Filtro(string dataInicio, string dataFinal, int? searchContrato)
    {
        try
        {

            int qtdeAjuda = QuantidadeAjuda(dataInicio, dataFinal, searchContrato);

            List<Analytics> g = new List<Analytics>()
            {  
                new Analytics(13, "Ajuda" + "(" + qtdeAjuda + ")", qtdeAjuda ),

            };

            return Json(new { JSONList = g }, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            return Json(null, JsonRequestBehavior.AllowGet);                
        }            
    }

See if this can help you with your question. Below is an example of a return to give you a handle on solving your problem.

<script>
$(function () {
    $.ajax({
        dataType: "json",
        type: "GET",
        url: "/Home/GetDados",
        success: function (dados) {
            $(dados).each(function (i) {
                document.writeln("<p>Nome: " + dados[i].Nome + " | URL: " + dados[i].URL + "</p>")
            });
        }
    });
});

    
19.11.2018 / 12:48