Foros del Web » Programando para Internet » Jquery »

XML y jQuery

Estas en el tema de XML y jQuery en el foro de Jquery en Foros del Web. Hola gente!. Estoy trabada con un tema desde hace ya varios días y lo comparto con ustedes a ver si me pueden dar una mano!. ...
  #1 (permalink)  
Antiguo 02/05/2012, 07:20
DmD
 
Fecha de Ingreso: agosto-2008
Ubicación: Buenos Aires, Argentina
Mensajes: 73
Antigüedad: 16 años, 3 meses
Puntos: 1
XML y jQuery

Hola gente!.
Estoy trabada con un tema desde hace ya varios días y lo comparto con ustedes a ver si me pueden dar una mano!.

Les cuento, tengo un xml con algunos campos de recetas (id, titulo, ingredientes, descripcion, foto) y necesito en una pagina listar los datos. Solo puedo usar html, css, javascript, ajax, (es decir, no puedo usar PHP o similar).
Lo que estoy haciendo es usar un codigo como el siguiente.

$(document).ready(function() {
$.get("datos.xml", function(respuestaxml){
$('item',respuestaxml).each(function(i){

var id = $(this).find("id").text();
var texto = $(this).find("texto").text() + " " + $(this).find("texto").attr('title');

$("#datos").html($("#datos").html() + id + " " + texto + "</br>");
});
});

});

El problema que tengo es que el código anterior me tira todos los datos en el div id="datos" pero yo necesito que me haga similar a lo siguiente:

<div class="receta">
<div class="titulo"></div>
<div class="ingredientes"></div>
</div>

O sea que me tire por cada item nuevo un div así y lo que me esta haciendo ahora es en <div class="titulo"> tirarme todos los títulos de todas las recetas.

Alguna idea??.

Gracias de antemano!.
Daniela.
  #2 (permalink)  
Antiguo 02/05/2012, 07:56
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: XML y jQuery

Revisá la documentación de $.parseXML:
http://api.jquery.com/jQuery.parseXML/

Supongamos un XML como este:
http://vimeo.com/api/v2/brad/appears_in.xml

Y queremos listar los videos con jQuery. Haríamos así:


Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  3. <script type="text/javascript">
  4.     $(function(){
  5.         var XML = ""; //obtener aca el XML
  6.        
  7.         var xmlDoc = $.parseXML( XML );
  8.         var $xml = $( xmlDoc );
  9.        
  10.         //Obtener todos los videos
  11.         var $videos = $xml.find('video');
  12.        
  13.         var $cont = $('#videos');
  14.         //listarlos todos
  15.         $videos.each(function(){
  16.             var $elem = $(this);
  17.             var titulo  = $elem.find('title').text();
  18.             var url = $elem.find('url').text();
  19.             var desc = $elem.find('description').text();
  20.             var thumb = $elem.find('thumbnail_small').text();
  21.            
  22.             $cont.append('<li><h2><a href="'+url+'">'+titulo+'</a></h2><p><img src="'+thumb+'" /></p><p>'+desc+'</p></li>');
  23.         });
  24.        
  25.     });
  26.  
  27.  
  28. <title>XML Test</title>
  29. </head>
  30.     <ul id="videos">
  31.        
  32.     </ul>
  33. </body>
  34. </html>

Acá lo podés ver funcionando:
http://jsbin.com/ixulub

Te recomiendo que uses $.ajax en lugar de $.get, de forma que puedas especificar que el tipo de datos que esperas es XML.

Saludos.
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 02/05/2012, 08:45
DmD
 
Fecha de Ingreso: agosto-2008
Ubicación: Buenos Aires, Argentina
Mensajes: 73
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: XML y jQuery

Naahuel, muchas gracias por la respuesta, es justo lo que necesito.

Te cuento que estuve intentando armarlo pero algo me falla.
Arme el xml, lo puse igual que el que me pasaste por las dudas. Lo subi a:[URL="http://test.legioncreativa.com.ar/pruebas_xml/videos.xml"]http://test.legioncreativa.com.ar/pruebas_xml/videos.xml[/URL] y el html a [URL="http://test.legioncreativa.com.ar/pruebas_xml/index.html"]http://test.legioncreativa.com.ar/pruebas_xml/index.html[/URL] pero algo no funciona.
El firebug me dice que tengo un error de sintaxys en videos.xml.

Tenes idea que puede estar pasando?.
Disculpa las molestias y gracias de nuevo!.
  #4 (permalink)  
Antiguo 02/05/2012, 08:49
Avatar de Dafonz  
Fecha de Ingreso: octubre-2009
Mensajes: 127
Antigüedad: 15 años, 2 meses
Puntos: 36
Respuesta: XML y jQuery

Porque con poner
XML = "videos.xml", no significa que te va a abrir el archivo y lo va a leer.. puedes utilizar ajax para leerlo
  #5 (permalink)  
Antiguo 02/05/2012, 09:06
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: XML y jQuery

Y claro :P

tu error está acá:
Código Javascript:
Ver original
  1. var XML = "videos.xml"; //obtener aca el XML

Proporcionate un url, no un código, jeje.

Probá esto:
Código Javascript:
Ver original
  1. $(function(){
  2.     //obtener el XML
  3.     var $pedido = $.ajax({
  4.         url : 'videos.xml',
  5.         contentType : 'xml'
  6.     });
  7.  
  8.     //cuando finalice el pedido
  9.     $pedido.done(function(resultadoXML){
  10.         //No es necesario parseXML si se usa contentType xml en $.ajax
  11.         //var xmlDoc = $.parseXML( resultadoXML );
  12.         var $xml = $( resultadoXML );
  13.        
  14.         //Obtener todos los videos
  15.         var $videos = $xml.find('video');
  16.        
  17.         var $cont = $('#videos');
  18.         //listarlos todos
  19.         $videos.each(function(){
  20.             var $elem = $(this);
  21.             var titulo  = $elem.find('title').text();
  22.             var url = $elem.find('url').text();
  23.             var desc = $elem.find('description').text();
  24.             var thumb = $elem.find('thumbnail_small').text();
  25.            
  26.             $cont.append('<li><h2><a href="'+url+'">'+titulo+'</a></h2><p><img src="'+thumb+'" /></p><p>'+desc+'</p></li>');
  27.         });
  28.        
  29.     });
  30. });
__________________
nahueljose.com.ar
  #6 (permalink)  
Antiguo 02/05/2012, 09:15
DmD
 
Fecha de Ingreso: agosto-2008
Ubicación: Buenos Aires, Argentina
Mensajes: 73
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: XML y jQuery

Gracias!!! ya funciona perfecto.

Antes de leer tu respuesta estaba probando con $.ajax pero no me funcionaba, se ve que estaba escribiendo mal la sintaxis, todavia no entiendo mucho de ajax.

Muchas gracias por todo!!!

Etiquetas: javascript, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:08.