[Php-avanzado] consulta jquery para la tesis

Cesar Gimenez Lascano cesargimenezlascano en gmail.com
Lun Jun 3 11:20:47 ART 2013


le tengo que agregar una llamada mas, si, son 3 en total, la primera a la
base de datos donde recolecto la información general y los ids que luego
uso para llamar a la api del sitio foursquare y de twitter para
complementar los datos del popup. te mando el código con la modificación
que me sugeriste y que no funciona correctamente, en la función getResto().
Muchas gracias...


El 3 de junio de 2013 09:44, Matias Gea <matigea en gmail.com> escribió:

> Ya me perdí de nuevo, ahora estás haciendo 3 llamadas anidadas? Me pasás
> el código nuevo (el que no te funciona correctamente)?
>
> Saludos!
>
>
> El 2 de junio de 2013 11:28, Cesar Gimenez Lascano <
> cesargimenezlascano en gmail.com> escribió:
>
> Gracias Leo! disculpame, a que te referís con "devolverlo ya cagado desde
>> el servidor"? a guardar los datos recibidos de las llamadas a las apis en
>> la base de datos? gracias x la ayuda. saludos!!
>>
>>
>> El 1 de junio de 2013 19:15, Leonardo Tadei - Pegasus Tech Supply <
>> leonardot en pegasusnet.com.ar> escribió:
>>
>> Cesar:
>>>
>>>         Quiero volver a una cuestión que Matías platea muy
>>> correctamente: no
>>> tiene sentido hacer varias llamadas AJAX en un bucle, porque si te hace
>>> falta todo esto, devolvelo ya cargado desde el servidor y listo!
>>>         Más allá del problema de sintaxis que haya, no es un uso
>>> razonable de
>>> AJAX, ya que es más lento todo esto que cargar los valores desde el
>>> principio.
>>>
>>>         Acordate del "principio de programación KISS" !!!
>>>
>>>
>>>
>>> El sáb, 01-06-2013 a las 15:52 -0300, Cesar Gimenez Lascano escribió:
>>> > la del ultimo registro de la tabla de la base de datos
>>> >
>>> >
>>> > El 1 de junio de 2013 15:51, Cesar Gimenez Lascano
>>> > <cesargimenezlascano en gmail.com> escribió:
>>> >         perdón mati, me adelante. El popup muestra bien la info de la
>>> >         segunda llamada, pero de la primera muestra en todos los
>>> >         popups la misma info.
>>> >
>>> >
>>> >         El 1 de junio de 2013 15:36, Cesar Gimenez Lascano
>>> >         <cesargimenezlascano en gmail.com> escribió:
>>> >
>>> >                 Genio Matias!!! anduvo de 10!!!! ahí entendí cual era
>>> >                 mi error, muchas gracias de verdad.Ya que estoy y sin
>>> >                 animo de abusar quisiera preguntarte, necesito tmb que
>>> >                 el popup muestre información de una llamada ajax mas,
>>> >                 donde encajaría en el nuevo código que me pasaste?
>>> >                 abrazo!!!
>>> >
>>> >
>>> >                 El 1 de junio de 2013 14:46, Matias Gea
>>> >                 <matigea en gmail.com> escribió:
>>> >
>>> >                         El problema lo tenés, probablemente acá:
>>> >                         var marker = new L.Marker(location, {title:
>>> >                         nombre, icon: myIcon});// creo el marcador
>>> >                         //llamo a la api de foursquare
>>> >                         $.getJSON('
>>> https://api.foursquare.com/v2/venues/'+fourID+'/tips?sort=recent&limit=2&client_id=315YX0EUHY5VW5SFVCPIBMMVYTSNCXNML20AHEEDL1Q2TMEE&client_secret=HOJHGWETZPZYXLS2NYSPMUO0A4WO2UQCUHVWEAXQWAOWROZ2',
>>> function(data2) {
>>> >                         var tip1 = data2.response.tips.items[0].text;
>>> >                         var tip2 = data2.response.tips.items[1].text;
>>> >                         marker.bindPopup("<div class='popup'>" +
>>> >                         "<span class='titulo'>"+ nombre +"</span>"
>>> >                         +"</br>"+ dir +"</br>"+ tel +"</br>"+ tip1
>>> >                         +"</br>"+ tip2 + "</div>", {maxWidth:
>>> >                         '600'}); // creo el popup
>>> >                         });
>>> >
>>> >
>>> >                         Fijate que estás declarando una variable
>>> >                         marker (en el for) y la utilizás para
>>> >                         relacionar el popup después que se resuelve el
>>> >                         request asincrónico. En ese momento (cuando
>>> >                         terminan los requests) ya finalizó hace rato
>>> >                         el for y marker queda con el útlimo valor.
>>> >                         Tenés que hacer que marker sea constante en la
>>> >                         función onSuccess del getJSON, así:
>>> >
>>> >
>>> >                         var marker = new L.Marker(location, {title:
>>> >                         nombre, icon: myIcon});// creo el marcador
>>> >                         //llamo a la api de foursquare
>>> >                         $.getJSON(
>>> >                         'https://api.foursquare.com/v2/venues/'+fourID
>>> >
>>> +'/tips?sort=recent&limit=2&client_id=315YX0EUHY5VW5SFVCPIBMMVYTSNCXNML20AHEEDL1Q2TMEE&client_secret=HOJHGWETZPZYXLS2NYSPMUO0A4WO2UQCUHVWEAXQWAOWROZ2',
>>> >                         (function(marker){
>>> >                         return function(data2) {
>>> >                         var tip1 = data2.response.tips.items[0].text;
>>> >                         var tip2 = data2.response.tips.items[1].text;
>>> >                         marker.bindPopup("<div class='popup'>" +
>>> >                         "<span class='titulo'>"+ nombre +"</span>"
>>> >                         +"</br>"+ dir +"</br>"+ tel +"</br>"+ tip1
>>> >                         +"</br>"+ tip2 + "</div>", {maxWidth:
>>> >                         '600'}); // creo el popup
>>> >                         }
>>> >                         })(marker)
>>> >                         );
>>> >
>>> >
>>> >
>>> >
>>> >                         Probalo y contame.
>>> >
>>> >
>>> >                         Saludos!
>>> >
>>> >
>>> >
>>> >
>>> >                         El 1 de junio de 2013 14:39, Cesar Gimenez
>>> >                         Lascano <cesargimenezlascano en gmail.com>
>>> >                         escribió:
>>> >
>>> >                                 Hola Matias!! mil gracias x la
>>> >                                 respuesta!!, te envío directamente
>>> >                                 toda la pagina, espero se entienda el
>>> >                                 código. Lo que ves son varios links
>>> >                                 (alojamientos, comercios, etc) que al
>>> >                                 hacer click llaman a una función js
>>> >                                 (getAlojs(), getComes(), etc ) que
>>> >                                 trae datos desde la base de datos
>>> >                                 (primer llamada ajax) y con ellos
>>> >                                 crear una capa de marcadores y sus
>>> >                                 popups y agrega todo a un mapa, con la
>>> >                                 ayuda de una biblioteca js de mapping
>>> >                                 que se llama leaflet. La segunda
>>> >                                 llamada ajax (la que esta dentro del
>>> >                                 for) se realiza a un servidor remoto
>>> >                                 (la API del sitio foursquare en este
>>> >                                 caso), los popups contienen
>>> >                                 información proveniente de ambas
>>> >                                 llamadas, por eso no veo como asociar
>>> >                                 su creación a un evento onClick y los
>>> >                                 cacheo a todos. Fijate que las dos
>>> >                                 llamadas ajax las estoy probando solo
>>> >                                 en la función getResto(), el resto de
>>> >                                 los popups muestra solo info de la
>>> >                                 base de datos y anda a la perfección.
>>> >                                 Espero puedas ayudarme, saludos!!!
>>> >
>>> >
>>> >                                 El 1 de junio de 2013 14:04, Cesar
>>> >                                 Gimenez Lascano
>>> >                                 <cesargimenezlascano en gmail.com>
>>> >                                 escribió:
>>> >
>>> >                                         Hola leo! gracias x la
>>> >                                         respuesta!.
>>> >                                         Efectivamente $.getJSON() hace
>>> >                                         una llamada AJAX asincrónica
>>> >                                         utilizando el framework JQuery
>>> >                                         (linkeo a documentación
>>> >                                         oficial x si sirve). Estuve
>>> >                                         revisando mejor el resultado y
>>> >                                         en realidad me muestra el
>>> >                                         ultimo popup, así que puede
>>> >                                         estar sucediendo lo que
>>> >                                         comentas del bucle, lo del
>>> >                                         nombre igual de variables no
>>> >                                         es el problema, si.
>>> >
>>> >
>>> >                                         El 31 de mayo de 2013 20:52,
>>> >                                         Leonardo Tadei - Pegasus Tech
>>> >                                         Supply
>>> >                                         <leonardot en pegasusnet.com.ar>
>>> >                                         escribió:
>>> >
>>> >                                                 Ufff... faltan muchos
>>> >                                                 detalles para empezar
>>> >                                                 a adivinar qué puede
>>> >                                                 estar
>>> >
>>> >                                                 pasando!
>>> >
>>> >                                                 Asumiendo que
>>> >                                                 $.getJSON() hace algún
>>> >                                                 tipo de llamada AJAX
>>> >                                                 usando el
>>> >                                                 framework JQuery, y
>>> >                                                 asumiendo que las
>>> >                                                 llamadas sean
>>> >                                                 asincrónicas, lo que
>>> >                                                 puede estarte pasando
>>> >                                                 es que las llamadas a
>>> >                                                 $.getJSON() adentro
>>> >                                                 del
>>> >                                                 bucle no alcancen a
>>> >                                                 terminar antes de que
>>> >                                                 vuelva a ser invocada
>>> >                                                 en el
>>> >                                                 próximo ciclo.
>>> >
>>> >                                                 Si lo que se ve es la
>>> >                                                 primera en vez de la
>>> >                                                 última, supongo que es
>>> >                                                 por la
>>> >                                                 implementación de la
>>> >                                                 biblioteca, pero
>>> >                                                 habría que destriparla
>>> >                                                 para estar
>>> >                                                 seguros.
>>> >
>>> >                                                 No debe ser el
>>> >                                                 problema, pero que
>>> >                                                 ambas funciones
>>> >                                                 anónimas usen como
>>> >                                                 parámetro la variable
>>> >                                                 "data" a mi de eriza
>>> >                                                 los pelos de la nuca,
>>> >                                                 por el
>>> >                                                 ámbito de las
>>> >                                                 variables en
>>> >                                                 JavaScript respecto de
>>> >                                                 las funciones, que es
>>> >                                                 mucho más amplio que
>>> >                                                 en otros lenguajes.
>>> >
>>> >                                                 Espero que alguien que
>>> >                                                 sepa más que yo de
>>> >                                                 JQuery nos ayude a
>>> >                                                 entender
>>> >                                                 qué es lo que pasa.
>>> >
>>> >
>>> >                                                 El vie, 31-05-2013 a
>>> >                                                 las 19:56 -0300, Cesar
>>> >                                                 Gimenez Lascano
>>> >                                                 escribió:
>>> >                                                 > Hola, tengo un
>>> >                                                 problema con un código
>>> >                                                 para armar una capa de
>>> >                                                 > marcadores, con su
>>> >                                                 respectiva ventana de
>>> >                                                 información (popups),
>>> >                                                 y
>>> >                                                 > agregarla a un mapa.
>>> >                                                 El código como está
>>> >                                                 crea todos los
>>> >                                                 marcadores
>>> >                                                 > pero solo el primer
>>> >                                                 popup. Es que la
>>> >                                                 función data del
>>> >                                                 segundo llamado
>>> >                                                 > $.getJSON se ejecuta
>>> >                                                 solo una vez? o el
>>> >                                                 mismo llamado?. Aclaro
>>> >                                                 que el
>>> >                                                 > popup se carga de
>>> >                                                 información de las dos
>>> >                                                 fuentes json por eso
>>> >                                                 esta uno
>>> >                                                 > dentro del otro.
>>> >                                                 Espero puedan darme
>>> >                                                 una mano!!!
>>> >                                                 >
>>> >                                                 >
>>> >                                                 >  $.getJSON("carga
>>> >                                                 datos", function
>>> >                                                 (data) {
>>> >                                                 >           for (var i
>>> >                                                 = 0; i < data.length;
>>> >                                                 i++) {
>>> >                                                 >             var
>>> >                                                 nombre =
>>> >                                                 data[i].nombre;
>>> >                                                 >             var dir
>>> >                                                 = data[i].direccion;
>>> >                                                 >
>>> >                                                 $.getJSON("cargar
>>> >                                                 otros datos",
>>> >                                                 function(data) {
>>> >                                                 > var var1= data.var1;
>>> >                                                 > var var2= data.var2;
>>> >                                                 > //crear popup
>>> >                                                 > });
>>> >                                                 >             //crear
>>> >                                                 marcador
>>> >                                                 >
>>> >                                                   //agregar marcador a
>>> >                                                 la capa
>>> >                                                 >           } // fin
>>> >                                                 del for
>>> >                                                 >
>>> >
>>> }).complete(function() {
>>> >                                                 > //agregar capa al
>>> >                                                 mapa
>>> >                                                 > });
>>> >                                                 >
>>> >
>>> >                                                 >
>>> >
>>> _______________________________________________
>>> >                                                 > Php-avanzado mailing
>>> >                                                 list
>>> >                                                 >
>>> >
>>> Php-avanzado en pato2.fi.mdp.edu.ar
>>> >                                                 >
>>> >
>>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>> >
>>> >                                                 --
>>> >                                                 Leonardo Tadei
>>> >
>>> leonardot en pegasusnet.com.ar
>>> >                                                 Web:
>>> >
>>> http://leonardo.tadei.com.ar
>>> >                                                 Firma pública:
>>> >
>>> http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>>> >
>>> >
>>> _______________________________________________
>>> >                                                 Php-avanzado mailing
>>> >                                                 list
>>> >
>>> Php-avanzado en pato2.fi.mdp.edu.ar
>>> >
>>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> _______________________________________________
>>> >                                 Php-avanzado mailing list
>>> >                                 Php-avanzado en pato2.fi.mdp.edu.ar
>>> >
>>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>> >
>>> >
>>> >
>>> >
>>> >                         --
>>> >                         Matias Fernando Gea
>>> >                         matigea en gmail.com
>>> >                         http://www.mfgea.com.ar
>>> >
>>> >                         _______________________________________________
>>> >                         Php-avanzado mailing list
>>> >                         Php-avanzado en pato2.fi.mdp.edu.ar
>>> >
>>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > _______________________________________________
>>> > Php-avanzado mailing list
>>> > Php-avanzado en pato2.fi.mdp.edu.ar
>>> > http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>>
>>> --
>>> Leonardo Tadei
>>> leonardot en pegasusnet.com.ar
>>> Web: http://leonardo.tadei.com.ar
>>> Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>>>
>>> _______________________________________________
>>> Php-avanzado mailing list
>>> Php-avanzado en pato2.fi.mdp.edu.ar
>>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>>
>>
>>
>> _______________________________________________
>> Php-avanzado mailing list
>> Php-avanzado en pato2.fi.mdp.edu.ar
>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>
>
>
>
> --
> Matias Fernando Gea
> matigea en gmail.com
> http://www.mfgea.com.ar
>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20130603/15e27b60/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: index.php
Type: application/x-httpd-php
Size: 8665 bytes
Desc: no disponible
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20130603/15e27b60/attachment-0001.php>


Más información sobre la lista de distribución Php-avanzado