2011-02-07 140 views
0

如何從iframe獲取json,它不是jsonp這裏是我的。 (當然只使用javascript)從iframe中獲取JSON - 不是jsonp

<script type="text/javascript"> 
var theFrame = document.getElementById('iframe'); 
      var theWin = theFrame.contentWindow; 
      var theDoc = theFrame.contentDocument || theFrame.contentWindow.document; 
var json = theDoc; 
var msgs = JSON.parse(theDoc); 

for (var i = 0, l = msgs.length; i < l; i++) { 
    var msg = msgs[i]; 
    var div = document.createElement('div'); 
    div.innerHTML = 'Hello ' + msg.user + ' your Id is: ' + msg.ID + 'and your message is: ' + msg.message + ' it has ' + msg.replies + ' replies'; 
    document.body.appendChild(div); 

</script> 

<iframe id="iframe" name="iframe" src="http://jsonsource.com/not/jsonp/" width="100" height="100"> 
    <p>Your browser does not support iframes.</p> 
</iframe> 

回答

2

一個iframe與XHR有相同的起源策略。所以,如果你的目標是要解決這個問題,那就把它忘掉吧。如果你的目標不是解決這個問題,爲什麼你會使用iframe而不是XHR(它有更好的API)?

也就是說,代碼中唯一明顯錯誤的是,您嘗試在iframe存在之前訪問iframe。將腳本移到它之後。

+0

是的,這是我的目標,但我不能獲得iframe的文檔文本一些如何和使用,作爲我的JSON解析? – Dakota 2011-02-07 22:30:37

+2

我只會將您的銀行網站加載到iframe中,讓您的瀏覽器爲您填寫密碼,然後使用JavaScript閱讀它 - **否!您不能!** - 如果您想繞過Same Origin,那麼提供它的服務器必須將數據提供爲可執行的JavaScript(JSON-P),或者您需要通過與提出請求的頁面相同的來源代理它。 – Quentin 2011-02-07 22:32:06

0

您可以通過訪問iframe的contentDocument.documentElement.textContent屬性來獲取所需內容。 (在IE中,它是innerText而不是textContent。)