2011-07-30 15 views
7

En mi página web, un iframe oculto está cargado con algunos JSON. Este JSON se actualiza mediante algunas acciones en la página. ¿Cómo accedo a este JSON en iframe desde mi página web? por alguna razón misteriosa inexplicable desconocida, estoy obligado a usar jQuery 1.3.2. por lo que no $.parseJSON()¿Cómo acceder a JSON desde un iframe que se origina en el mismo dominio?

+0

¿Está el iframe en el mismo dominio que su página externa? – Paulpro

+0

Sí, el título de la pregunta dice esto, "¿proviene del mismo dominio?" – Kumar

+0

ah, lo siento, lo eché de menos :) ¿Tiene su marco un atributo de identificación? Si no, puede agregar uno (Eso hará que sea más fácil de seleccionar y más rápido) – Paulpro

Respuesta

14

Creo que se puede utilizar:

var json = $.parseJSON($("#hiddeniframe").contents().text()); 

algo por el estilo va a funcionar por lo menos.

+1

Por desgracia, le informo que estoy obligado a vivir en la edad de piedra y uso jQuery 1.3.2 – Kumar

+0

@kumar, ¿es capaz de utilizar una biblioteca diferente como https://github.com/douglascrockford/JSON-js/blob/master /json2.js para analizarlo? Siempre tienes la opción de usar 'eval()', pero ese debería ser el último recurso. – Paulpro

+0

@kumar, o podría usar jQuery's getJSON(), cargando el contenido del iframe a través de ajax en lugar de en un marco? – Paulpro

8

Todos los navegadores modernos incluyen una biblioteca de análisis JSON:

var data = JSON.parse($("#hiddeniframe").contents().text()); 

Si tiene que soportar los navegadores más antiguos hay varias bibliotecas para elegir la que tenga la misma interfaz. Los mejores verificarán si el navegador proporciona una implementación nativa y no la anularán, ya que seguramente será más rápida.

Ver también JSON.stringify()

+1

publicación subestimada –

1

El código @Paulpro colocado:

var json = $.parseJSON($("#hiddeniframe").contents().text()); 

no funciona para mí.

he cambiado el código para:

var json = $.parseJSON($("#hiddeniframe").contents().find("*").first().text()); 

Y ahora funciona.

Cuestiones relacionadas