2010-12-13 17 views
7

cargo un html con el Ajax. Quiero cargar el resultado en un objeto jquery. Intenté eso pero devuelve nulo. ¿Cómo puedo hacer esto? Obtuve una página completa que incluye doctype, elementos de la cabeza y elementos del cuerpo.Parse página completa html con jQuery

var test = $(result); //result contains html code 
alert(test.html()); //returns null 

I cargar los datos con esta función.

function ajaxLoadContent(element) { 
    $.ajax({ 
     url: "url to the page", 
     type: "GET", 
     timeout: 5000, 
     datattype: "html", 
     success: function(result) { 
     //handler 
     }, 
    }); 
    return false; 
+0

resultado es probablemente sólo una cadena – hunter

+0

puedo mostrar cómo obtener los datos en 'result'? Además, 'alert (result);' muestra el html en la alerta? El solo hecho de deshacerse de html en una variable como esa no hace que la función .html() devuelva html automáticamente. su variable de resultado ya puede ser html. – Josh

+1

¿Por qué no solo imprimir el resultado? Esto debería ser texto. – WaiLam

Respuesta

45

Es hace un tiempo, pero tal vez usted todavía está interesado en él ..

La aplicación pasante de $(String) no es capaz de construir un objeto jQuery que contiene head o body etiquetas. Simplemente los ignorará y moverá todos los elementos dentro del nivel superior.

Así que si su cadena es, por ejemplo,

<html> 
    <head> 
    <meta ...> 
    </head> 
    <body> 
    <div id="a"/> 
    </body> 
</html> 

el objeto jQuery resultante será una matriz de dos elementos

[<meta ...>, <div id="a" />] 

para obtener una body -como objeto jQuery cortar todo, pero el contenido del cuerpo antes de pasarlo a jQuery:

body = '<div id="body-mock">' + html.replace(/^[\s\S]*<body.*?>|<\/body>[\s\S]*$/ig, '') + '</div>'; 
var $body = $(body); 

ahora las cosas funcionan como exp reflejada .. por ejemplo

$body.find('#a') 

Espero que ayude ..

+2

¿por qué no se ha aceptado esta respuesta? Sálvame de un montón de dolor de cabeza. ¡Gracias! – Xaver

+3

¿por qué no puede jquery analizar la cabeza y el cuerpo? – nbrustein

+0

Insta-downvote para usar regex en HTML. –

2

prueba es simplemente una cadena HTML, por lo que simplemente puede hacer esto para mostrar el contenido

alert(result); 

y si desea enlazar que a un elemento

$("#myDiv").html(result); 
+0

Quiero poder usar algunas funciones de jquery en el valor de retorno. –

+1

ya que el resultado es solo una cadena, probablemente deba colocarla en la página antes de poder interactuar con ella con jQuery. – hunter

+0

Mzz de lo que necesito para ubicarlo en un iframe oculto, supongo. Eso sería desagradable. Probablemente sea mejor diseñar una solución lista para usar. –

-1

Prueba la load método del objeto jQuery: http://api.jquery.com/load/

Cargar datos desde el servidor y colocar el HTML devuelto al elemento emparejado.

+0

El autor de esta respuesta podría estar en algo. Convirtiendo toda la cadena HTML en una url 'data:' y llamando a $ .ajax() podría ser el ÚNICO método confiable. –

1
function ajaxLoadContent(element) { 
$.ajax({ 
    url: "url to the page", 
    type: "GET", 
    timeout: 5000, 
    datattype: "html", 
    success: function(data) { 
    var result = $(data); 
    }, 
}); 
return false; 

Ahora debería ser capaz de llamar al resultado como este (recuerde que no es añadido a la DOM todavía):

alert(result.html()); 

Añadir al DOM

result.appendTo("body"); 

Let yo sé si esto funciona para ti.

+1

No, eso no funciona, ya que el html que consigo contiene cabeza, etiquetas corporales e incluso un tipo de documento. –

+0

bien, cámbielo a: var resultado = datos; $ ("html"). Html (resultado); Avísame si funciona –

+0

I para tener acceso a los elementos de la cabeza también. Este trabajo es solo para los elementos del cuerpo y el elemento del título. –

Cuestiones relacionadas