2013-08-04 96 views
1

我想從其他域的HTML,所以我使用$ .getJson來獲取HTML,但我得到一些問題。我使用getJSON從跨域獲取html

代碼是

var site = "www.moneycontrol.com"; 
     var yql_url = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=xml&callback=cbFunc'; 
     $.getJSON(yql_url, function (json) { 
      $('#CurrencyData').html(json.results[0]); 
     }); 

內部的document.ready的jquery的。 和HTML我有一個div

<div id="CurrencyData"> 
    </div> 

當我運行這段代碼什麼也不顯示在我的本地,但如果我用firebug..after運行該頁調試我得到JSON和響應來自上述所有HTML結果現場。

現在我想知道如果我在JSON中獲取數據,那麼它爲什麼不顯示在div?

回答

1

在做JSON-P時,jQuery會爲您創建必要的回調函數,以確保名稱尚未被使用等,例如,它完成了管道工作。

所以它可以這樣做,讓jQuery控制回調函數的名稱。在您的查詢字符串,改變

&callback=cbFunc 

&callback=? 

jQuery將在它創建的回調的名稱來替代。

Live Example | Live Source(字面意思就是你的問題與上述改變)

+0

如果我從&callback = cbFunc更改爲&callback =?並改變$('#CurrencyData')。html(json.results [0]);到$('#CurrencyData')。html(json);即使在螢火蟲中我也沒有得到任何東西 – Mahajan344

+0

@Spenzo:你正在爲你的頁面注入一個不同頁面的HTML。這並不奇怪,你會得到一些錯誤(其中許多看起來像是頁面上的腳本依賴於頁面上沒有加載的東西的錯誤)。你必須對你得到的HTML做一些處理,但從根本上說,上述改變至少可以讓你獲得HTML。 –

+0

感謝它的工作:) – Mahajan344