2011-07-30 13 views
7

Na mojej stronie ukryty element iframe zawiera pewien JSON. Ten JSON jest odświeżany przez niektóre działania na stronie. Jak uzyskać dostęp do tego JSON w iframe z mojej strony internetowej? dla niektórych nieznanych tajemnic niewytłumaczalny powód jestem zmuszony do korzystania z jQuery 1.3.2. tak nie $.parseJSON()Jak uzyskać dostęp do JSON z elementu iframe pochodzącego z tej samej domeny?

+0

Czy element iframe znajduje się w tej samej domenie, co strona zewnętrzna? – Paulpro

+0

Tak, w tytule pytania jest napisane "pochodzące z tej samej domeny?" – Kumar

+0

ah, przepraszam, że przegapiłem to :) Czy twoja ramka ma atrybut id? Jeśli nie możesz dodać do niego (To ułatwi wybór i przyspieszenie) – Paulpro

Odpowiedz

14

myślę, że można użyć:

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

Coś wzdłuż tych linii będzie działać przynajmniej.

+1

Z przykrością informuję, że jestem zmuszony żyć w epoce kamienia łupanego i używać jQuery 1.3.2 – Kumar

+0

@kumar, czy możesz użyć innej biblioteki, takiej jak https://github.com/douglascrockford/JSON-js/blob/master /json2.js do parsowania? Zawsze masz możliwość użycia 'eval()', ale to powinno być ostatecznością. – Paulpro

+0

@kumar, czy byłbyś w stanie użyć getJSON() jQuery, ładując zawartość iframe przez ajax zamiast w ramce? – Paulpro

8

wszystkich nowoczesnych przeglądarkach obejmują JSON parsowania Biblioteka:

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

Jeśli potrzebujesz wsparcia starszych przeglądarek istnieje kilka bibliotek do wyboru, który zapewni ten sam interfejs. Ci lepsi sprawdzą, czy przeglądarka zapewnia natywną implementację i jej nie zastąpi, ponieważ musi być szybsza.

Zobacz także JSON.stringify()

+1

niedoszacowany post –

1

Kod @Paulpro Wysłany:

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

nie działa dla mnie.

Zmieniłem kod do:

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

A teraz to działa.

Powiązane problemy