[Php-avanzado] consulta jquery para la tesis
Cesar Gimenez Lascano
cesargimenezlascano en gmail.com
Sab Jun 1 15:51:10 ART 2013
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 <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/10314718/attachment.html>
Más información sobre la lista de distribución Php-avanzado