none
guardar cabecera y detalle al mismo tiempo con ajax json RRS feed

  • Pregunta

  • como podrian guardar mediante

     $.ajax({
                type: "POST",
                url: "factura.aspx/agregar",
                data: "{"}",

    tanto la cabecera y detalle de un factura  al mismo tiempo

    antes lo habia realizaddo sin ajax utilizando en mis entidades

    xml

     Public Function GetItemXML() As String
            Dim objXMLDoc As New XmlDocument
            Dim objNode As XmlNode

    objNode = objXMLDoc.CreateElement("ITEMS")

     objXMLDoc.AppendChild(objNode)

    for

    ----

    pero ahora no se como poder interactuar....con ajax



    QUIERO MATAR ESTA DUDA ... ANTES QUE EL MUNDO DEJE DE EXISTIR..

    viernes, 7 de noviembre de 2014 23:04

Respuestas

  • hola

    claro esa es la notacion json, podrias definir un json estatico y enviarlo para ver si lo recibes correctamente en el servicio desde el lado del servidor

    si lo recibes bien luego cambias la parte fija por la la dinamica tomando los valores de los controles

    >>me podrias seguir guiando sobre como utilizar el factura.detalle.push(new { idarticulo: 10, cantidad: 1});

    eso es lo mismo que ya estas realizando con el

     $('#tabla tr').each(function (index) {

    solo que armas el objeto { descripcion: "Producto 1", cantidad: 0, precio: 0 }, para asignarlo con el push() a la lista de elementos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 8 de noviembre de 2014 10:23

Todas las respuestas

  • hola

    pero la cabecera y el detalle la toma de que elementos del html ?

    porque podrias armar un objeto json que enviar por $.ajax

    y del lado del .net replicar esa misma estructura

    podrias definir algo como ser

    var factura = new {

         idcliente : 1,

         nombre : xxx,

         detalle: ....

    };

    en el detalle alli iria un array de elementos que podrias agregar con push()

    factura.detalle.push(new { idarticulo: 10, cantidad: 1});

    por supuesto esa linea la podrias dentro de un $.each() para que itere el elemento de donde tomas el detalle

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 7 de noviembre de 2014 23:51
  • hola leandro:

    la cabecera son elementos text html  

    el detalle lo tomo de una table html 

    hasta el momento voy haciendo esto.. claro poco a poco 

        $("#Button1").click(function () {
            var producto = [];
            var precfrof = [];
            var cantprof = [];
    
            $('#tabla tr').each(function (index) {
                if (index > 0) {
                    tr = $(this);
                    var cantid = $("td input[name='t2'] ", tr).val();
                    var prec = $("td input[name='t1'] ", tr).val();
                    producto.push($(this).children("td:eq(1)"  , tr).text());
                    cantprof.push(cantid);
                    precfrof.push(prec);
    
                }
    
            });
    
        });

    estoy declarando array para almacenar la informacion

    pero veo que tu lo planteas de una manera.. algo diferente... podrias guiarme unpoco mas

    por el lado del net espero como seria  para esta operacion.. manejando los webmethod

    aunque tambien esta informacion lo tengo en una session..


    QUIERO MATAR ESTA DUDA ... ANTES QUE EL MUNDO DEJE DE EXISTIR..


    • Editado ApreSabi sábado, 8 de noviembre de 2014 0:00
    viernes, 7 de noviembre de 2014 23:58
  • Estaba investigando y vi esto.. me podrias seguir guiando sobre como utilizar el factura.detalle.push(new { idarticulo: 10, cantidad: 1}); que mencionaste en ese formato..

    var factura = {
      empresa: {
        nombre:    "Nombre de la empresa",
        direccion: "Dirección de la empresa",
        telefono:  "900900900",
        nif:       ""
      },
      cliente: {
        nombre:    "Nombre del cliente",
        direccion: "Dirección del cliente",
        telefono:  "600600600",
        nif:       "XXXXXXXXX"
      },
      elementos: [
        { descripcion: "Producto 1", cantidad: 0, precio: 0 },
        { descripcion: "Producto 2", cantidad: 0, precio: 0 },
        { descripcion: "Producto 3", cantidad: 0, precio: 0 }
      ],
      informacion: {
        baseImponible:  0,
        iva:            16,
        total:          0,
        formaPago:      "contado"
      }
    };


    QUIERO MATAR ESTA DUDA ... ANTES QUE EL MUNDO DEJE DE EXISTIR..

    sábado, 8 de noviembre de 2014 6:32
  • hola

    claro esa es la notacion json, podrias definir un json estatico y enviarlo para ver si lo recibes correctamente en el servicio desde el lado del servidor

    si lo recibes bien luego cambias la parte fija por la la dinamica tomando los valores de los controles

    >>me podrias seguir guiando sobre como utilizar el factura.detalle.push(new { idarticulo: 10, cantidad: 1});

    eso es lo mismo que ya estas realizando con el

     $('#tabla tr').each(function (index) {

    solo que armas el objeto { descripcion: "Producto 1", cantidad: 0, precio: 0 }, para asignarlo con el push() a la lista de elementos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 8 de noviembre de 2014 10:23
  • cada vez que quiero utilizar el

    factura.detalle.push(new { idarticulo: 10, cantidad: 1});

    no ejecuta..  


    QUIERO MATAR ESTA DUDA ... ANTES QUE EL MUNDO DEJE DE EXISTIR..

    domingo, 9 de noviembre de 2014 23:14
  • a que llamas "no ejecuta" ?tienes que ser algo mas especifico

    obtienes un error de javascript ? puedes validar esto en la consola del Developer tools del browser al cual acceder con F12

    prueba sin el new, sino recuerdo mal creo que lo puse de mas

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 10 de noviembre de 2014 0:14