Foro

He buscado, revisado y vuelto a buscar, pero no consigo, ni se cómo configurar el "callback" que necesito...

0
Estimados, de verdad que necesito de su ayuda porque todo va bien... excepto que no consigo ver el html, devuelto por el archivo php que llamo desde una solicitud "Ext.Ajax.request" (sólo se peude ver en la ventana para debugear). Hasta ahora he buscado y revisado mucho material que me ayude a configurar el "callback" para obetener el resultado que necesito, pero nada me ha funcionado y no me queda más que insistir en mi pedido de ayuda apelando a su siempre buena disposición.

Gracias por la ayuda que me puedan dar para seguir con mi aprendizaje...

... Al dar click en el botón que he dispuesto en el gridPanel

me.on('ButtonClicked', function (grid) {

var sm = grid.getSelectionModel(); 

var selected = sm.getSelection();

var numRecords = sm.getCount(); //Devuelve el número de filas seleccionadas (todas son enlaces a tabulados en forma

to html)

        Ext.each(selected, function(item) {

            var url = item.get('Archivo');

       rows.push(url); // agrega enlaces a la matriz

        }, this);

 ... Llamada al archivo php y paso de parámetros


    Ext.Ajax.request({

      url: 'recibeS.php',  // mi url

      method: 'POST',

      params: {

              "group[]": rows,  // incluye la matriz en los parámetros

              },

      success: function(response, opts) {

               console.log("ok");

              var win =Ext.getCmp('SE QUE AQUI DEBO HACER REFERENCIA A UN COMPONENTE... PERO NO SE A CUÁL');

              win.myWindow.show();

               },

    failure: function() {

                  console.log('error');

               }

      });

 

Los componentes que tengo en mi aplicación son:
a) 


Ext.define('UrlGrid', {   extend: 'Ext.grid.Panel',

   itemId: 'urlgrid',

  alias: 'widget.UrlGrid',

   layout:'fit',

 b) un data model (Ext.define('MyGrid', ...)

c) un Store (var store = Ext.create('Ext.data.JsonStore',...)

d) Una instancia de mi aplicación

Ext.application({

    name: 'Fiddle',

 e) Un panel

Ext.create('Ext.panel.Panel', { renderTo: Ext.getBody(),

            width: 500,

            heigth: 500,

            title: 'Url Demo',

            items: [{

                xtype: 'UrlGrid'

            }]

        });


0
Ext.getCmp espera un parámetro que será el ID del componente que necesitas obtener, en este caso tendrías que asignarle un ID al componente que quieres y luego usar ese ID en el callback.

getCMP no es muy recomendable usarlo por los problemas que pueda ocasionar más adelante si llegaras a duplicar un ID, pero intentalo y nos cuentas.

Saludos
0
Estimado Crysfel (te dirijo mi mensaje a ti por ser el único que se ha tomado tiempo para ayudarme),

Después de un par de semanas un poco complicadas, recién, ésta que termina, pude retomar lo que venía haciendo y a pesar que le he puesto mucho empeño resulta evidente que no he podido dar con la manera de resolver el tema de conseguir que el bendito "recibeS.php" se despliegue en la pantalla del browser, no voy a poner todos los intentos que he hecho ni la referencia a cuanto post relacionado con esto he leído y probado, pero nada. En resumen: 

1.- Envío bien la petición y parámetros al archivo php
2.- El servidor devuelve el archivo "recibeS.php" en formato html con cada uno de los tabulados que haya seleccionado desde el gridPanel
3.- La cónsola del debugger que utilice no muestra ningún error
4.- El browser no muestra nada
5.- El archivo "recibeS.php" devuelto desde el servidor sólo lo puedo ver activando/accediendo por "More tools/Developer tools/Network/recibeS.php (devuelto por el server)/Preview" en caso que use Chrome
6.- Entre lo que he hecho, he creado una ventana (Ext.Window) a la que he asociado el "RecibeS.php", pero lo que me muestra es el archivo que "levanta" desde su ubicación de carpeta y NO el devuelto por el servidor... entonces nunca ha funcionado la visualización correcta.
7.- Mi proyecto final no es más (la verdad ha resultado mucho) que implementar con ExtJs lo que ya hice antes con la idea de mejorarlo (http://celade.cepal.org/piaalc_esp/MIGR_Int/SelectS.php) si te animas a darle una mirada hazlo con FireFox
8.- La verdad es que estoy bien, pero bien entrampado con esto y lo único que quiero es seguir adelante.

Agrego un enlace para los archivos que estoy utilizando y "piaalc.html" es el archivo de "arranque de la aplicación" https://www.dropbox.com/s/sbznleq0bzj1k7g/Final.rar?dl=0

Gracias por la ayuda que puedas dar.

Saludos.









0
Si lo que devuelves en tu archivo recibeS.php es html y deseas integrarlo en una ventana, puedes crear la ventana en el callback del ajax o si tu ventana ya existe al momento del retorno del ajax puedes usar:

 var  win = Ext.getCmp('miventana-id');

Obviamente tu ventana debe tener declarada la propiedad "id" con el mismo nombre que vas a usar en el Ext.getCmp() y luego necesitas usar lo que devuelves de recibeS.php que estará contenido dentro de la variable "response" (puedes usar console.log(response); para ver como lo estas devolviendo y luego:

win.update(response.loqueseaquedevuelvo);

es lo que se me ocurre, suerte ;)






0
Gracias Héctor, por tu respuesta. De hecho hace sólo dos días pude encontrar la manera para visualizar la salida en el browser. Lo conseguí insertando lo siguiente en el Sucess del Ext.AjaxRequest:

//Code here

                                                 var win = Ext.create("Ext.window.Window",{

                                                          title :"Test Tabulados",

                                                          itemId: "VentanaTabs",

                                                          style : "text-align:center", 

                                                          autoScroll:true,

                                                          width : 600,

                                                          height: 450 ,

                                                          html: response.responseText, //el contenido del panel

                                                          item: main



                                                 });


                                                  var main = new Ext.Panel({

                                                          title: 'Resultados',

                                                          itemID: "PanelOut",

                                                          height: 500,

                                                          render: win, //el elemento donde será insertado

                                                 });



                                                  win.show(); 


Ahora le voy a dedicar tiempo a llevar esto, que ya  funciona, al ejemplo que se usa en el tutorial "Las pestaas o Tabs" del curso de EXTJs 3... ya veré cómo me va, pero lo seguro es que volveré a aparecer pidiendo ayuda.

Gracias por la atención prestada.


 
tokkaido: te felicito, y cualquier duda pues a postearla 08/08/2015

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.