[Php-avanzado] consulta jquery para la tesis
Cesar Gimenez Lascano
cesargimenezlascano en gmail.com
Sab Jun 1 15:36:52 ART 2013
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 <http://leafletjs.com/>. 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()<http://api.jquery.com/jQuery.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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20130601/eec91d06/attachment-0001.html>
Más información sobre la lista de distribución Php-avanzado