[Php-avanzado] consulta jquery para la tesis

Matias Gea matigea en gmail.com
Sab Jun 1 14:46:37 ART 2013


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


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