[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