Ver Mensaje Individual
  #16 (permalink)  
Antiguo 24/11/2010, 23:32
Avatar de dual3nigma
dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 122
Respuesta: Ayuda para obtener info de XML mediante JS

Mira hice un ejemplo rapido de lo que yo entiendo que quieres hacer, revisalo y me dices si te sirvio de algo, siquieres primero pruebalo tal cual para que veas su funcionamiento, le puse muchos comentarios
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <meta charset="utf-8" />
  3. <title>Cross Domain Ajax</title>
  4. <script src="jquery.min.js"></script>
  5. /**
  6.  * Con esta funcion cargas el feed de los videos
  7.  * y una vez que se han cargado todos llamas a la funcion "callback"
  8.  *
  9.  * @param {Array} list - Un arreglo con los id's de los videos
  10.  * @param {Function} callback - La funcion que se llama cuando todos los datos de los videos se han cargado
  11.  */
  12. function getXMLinfo(list, callback) {
  13.     var path = 'http://gdata.youtube.com/feeds/videos/',
  14.         videosInfo = [], // El array que contiene los datos de los videos
  15.         url, YQL,
  16.         cuantos = 0, total = list.length; // cuantos van cargados y cuantos son en total
  17.    
  18.     // por cada id de video
  19.     for(var i in list) {
  20.         url = path + list[i];
  21.         YQL = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + url + '"') + '&format=xml&callback=?';
  22.        
  23.         // Comenzar la carga del feed
  24.         $.getJSON(YQL, function (XMLData) {
  25.             // Otro consejo cuando use jquery trata de evitar repetir por todos lados
  26.             // $(XMLData.results[0]) y despues al rato $(XMLData.results[0]) otra vez
  27.             // mejor ponlo en una variable ok?
  28.             var feed = $(XMLData.results[0]);
  29.            
  30.             // Aqui vas poniendo todo en el array
  31.             videosInfo.push({titulo: feed.find('title').text(),
  32.                     descripcion: feed.find('media\\:description').text()});
  33.            
  34.             cuantos++;
  35.            
  36.             // Si ya se cargaron todos entonces llamas a la funcion que pusiste como callback
  37.             if(cuantos == total) callback.call(null, videosInfo);
  38.         });
  39.     }
  40. }
  41.  
  42. // Pasas los ids, y la funcion que se llamara cuando todo el contenido se cargue
  43. getXMLinfo([
  44.     'VurhzANQ_B0',
  45.     'ZXTC0SmgE2s',
  46.     'jUkoL9RE72o',
  47.     'Fi_GN1pHCVc',
  48.     'oJaBHSIRVlE',
  49.     '94bGzWyHbu0'
  50. ], function (info) { // Info es el array que getXMLinfo se llamaba videosInfo
  51.     var datos = $('#datos');
  52.    
  53.     // como ejemplo los meto en div#datos
  54.     for(var i in info) {
  55.         datos.append('<p><strong>'+info[i].titulo+'</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;'+info[i].descripcion+'</p>');   
  56.     }
  57. });
  58. </head>
  59. <div id="datos">
  60. </div>
  61. </body>
  62. </html>

Ah y te dejo una captura ¬¬ (para que luego no digas que no funciona) jajaja ntc

Saludos!