Autor Tema: [SOLUCIONADO] Ajax html  (Leído 735 veces)

0 Usuarios y 1 Visitante están viendo este tema.

mpablounq

  • Jr. Member
  • **
  • Mensajes: 93
    • Ver Perfil
    • Email
  • Institución: Universidad Nacional de Quilmes
[SOLUCIONADO] Ajax html
« on: Diciembre 01, 2016, 11:49:36 am »
Buenas, se que lo que estoy pidiendo es bien básico, pero no lo estoy encontrando ni en la doc, ni el el foro. Necesito hacer lo siguiente. Tengo que cargar por AJAX  un pedazo de código HTML, un pagelet imagino. Pero no lo estoy pudiendo lograr, cómo debería hacerlo? Saludos!

PD: Estoy trabajando en 3W G3
« Última Modificación: Diciembre 01, 2016, 03:28:23 pm por lleonardis »

Leonel Leonardis

  • Moderador Global
  • *****
  • Mensajes: 2731
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Leonel Leonardis
  • Sistema: SIU-Guaraní
  • Utilizo algun sistéma del SIU: Sí
Re:Ajax html
« Respuesta #1 on: Diciembre 01, 2016, 12:53:07 pm »
Hola Pablo, podes buscar lo siguiente dentro del proyecto "kernel.ajax.call" y vas a encontrar montones de ejemplos.

kernel.ajax.call lo que termina haciendo es un $.ajax de Jquery.

Se llama de la siguiente forma:

Código: [Seleccionar]
kernel.ajax.call(url, opciones)

url: es la url donde ira el AJAX
opciones: un objeto JSON con todas las opciones para hacer el AJAX (son las mismas opciones que $.ajax).

Un ejemplo seria:

Código: [Seleccionar]
                      kernel.ajax.call('http://localhost/guarani/3w/operacion/accion', {
                        type: 'POST',
                        data: {
                            dato1: 'valor1',
                            dato2: 'valor2'
                        },
                        success: function(paquete) {
                            $('#mi_div').html(paquete.cont);
                        },
                        error: function() {
                            $('#mi_div').html('Hubo un error');
                        }
                    })

saludos.
« Última Modificación: Diciembre 01, 2016, 01:02:18 pm por lleonardis »

mpablounq

  • Jr. Member
  • **
  • Mensajes: 93
    • Ver Perfil
    • Email
  • Institución: Universidad Nacional de Quilmes
Re:Ajax html
« Respuesta #2 on: Diciembre 01, 2016, 01:04:14 pm »
Hola Leonel, buenísimo, voy a buscar por ese lado. Tenía más dudas del lado del controlador, como devolver el render de un pagelet en particular. Saludos!

Leonel Leonardis

  • Moderador Global
  • *****
  • Mensajes: 2731
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Leonel Leonardis
  • Sistema: SIU-Guaraní
  • Utilizo algun sistéma del SIU: Sí
Re:Ajax html
« Respuesta #3 on: Diciembre 01, 2016, 03:11:02 pm »
Hola, del lado del controlador podes hacer lo siguiente:

1) Render de un twig:

Código: [Seleccionar]
function accion__zzzzzzzzzzzzzzzzz()
    {
        $dato1 = $this->validate_param('dato1', 'post', validador::TIPO_TEXTO);
        $dato2 = $this->validate_param('dato2', 'post', validador::TIPO_TEXTO, array('allowempty' => true));       
       
        ..................................

        $datos_twig['dato1'] ='xxxxxxxxxxxxxxxxxx';
        $datos_twig['dato2'] = 'yyyyyyyyyyyyyyyyyy';
        $this->render_template('archivo.twig', $datos_twig);

    }

en el js se accede asi:

Código: [Seleccionar]
                        success: function(paquete) {
                            var contenido_archivo = paquete.cont;
                        }

2) Render de un pagelet:

Código: [Seleccionar]
function accion__zzzzzzzzzzzzzzzzz()
    {
            ..................................

            $pagelet = $this->vista()->pagelet('nombre_pagelet'); // sin el "pagelet_"
            kernel::renderer()->add($pagelet);

            ..................................

            kernel::renderer()->add_to_ajax_response('hubo_error', $hubo_error); //También se pueden agregar mas datos a la respuesta...
            kernel::renderer()->add_to_ajax_response('mensaje_error', $mensaje_error); //...así cuantos quieras
    }

en el js se accede asi:

Código: [Seleccionar]
                        success: function(paquete) {
                            var contenido_pagelet = paquete.cont;
                            var hubo_error = paquete.hubo_error;
                            var mensaje_error = paquete.mensaje_error;
                        }

saludos.
« Última Modificación: Diciembre 01, 2016, 03:30:57 pm por lleonardis »

mpablounq

  • Jr. Member
  • **
  • Mensajes: 93
    • Ver Perfil
    • Email
  • Institución: Universidad Nacional de Quilmes
Re:Ajax html
« Respuesta #4 on: Diciembre 01, 2016, 03:19:42 pm »
Buenísimo, era lo que necesitaba, muchas gracias!