[Php-avanzado] consulta jquery para la tesis

Matias Gea matigea en gmail.com
Lun Jun 3 09:44:15 ART 2013


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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20130603/1784812c/attachment-0001.html>


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