Ver Mensaje Individual
  #8 (permalink)  
Antiguo 04/01/2010, 13:30
Avatar de mayid
mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: Combinar Lightbox (jQuery) con datos en XML

Internet explorer necesita lineas especiales. Hay una que esta comentada con // porque en realidad todo me funciona sin necesidad de esa linea.

Podes no usar ajax, quizas, pero fijate que no es dificil con ajax. La estructura es:
Cita:
$.ajax({

type: "POST",

url: "direccion.xml",

async: false,

dataType: "text",

success: function(data) { },

error: function(data) { }

})
En success aplicas la conversion del archivo xml en algo que puedas manejar con jquery / javascript. Eso es lo que parece lioso, que en mi ejemplo esta puesto dentro de una funcion.

data representa al archivo xml que leemos con ajax. Pero para poder usarlo necesitamos convertirlo en html. Con esta funcion, mirá:

Cita:
function stringToDoc(s) {
var xml;
if (window.ActiveXObject) {
xml = new ActiveXObject('Microsoft.XMLDOM');
xml.async = 'false';
xml.loadXML(s);
return xml;
}
else
xml = (new DOMParser()).parseFromString(s, 'text/xml');
return (xml && xml.documentElement && xml.documentElement.tagName
!= 'parsererror') ? xml : null;
};
xml = stringToDoc(data);
recorda que "data" es lo que obtuvimos desde ajax. Ahora lo procesamos con una funcion, que se resuelve asi:

Cita:
xml = stringToDoc(data);
A partir de ahi podes manejar el objeto xml de manera muy simple. Por ejemplo, yo leia titulo y descripcion desde un xml. Y la publicaba con un each:

Cita:
$(xml).find('item').each(function(){

titulo_bruto = $(this).find('titulo').text(); // aqui se seleccionan valores de un xml
descripcion = $(this).find('descripcion').text();

titulo = "<p><strong>"+titulo_bruto+"</strong>" + "<p>"+descripcion+"</p></p>";

}); // fin de each (archivo descripciones.xml)