2012-08-09 110 views
0

我在顯示頁面中的某個jason時遇到問題。JQuery JSON數據不顯示

的數據是有,但我認爲這可能與這一行做:

document.write(fbResults.cats[0].title); 

以下是完整的HTML源代碼:

<!DOCTYPE HTML> 
<html> 
<head> 
<title></title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 

<script> 

    $(document).ready(function() { 
     $.getJSON('http://mydomain.com/api/get_cats', function(fbResults) { 
      document.write(fbResults.cats[0].title); 
     }); 
    }); 
</script> 

</head> 
<body> 

</body> 
</html> 

這裏是它的讀取數據:

{"cats":[ 

{"id":"1","title":"mytitle1","colour":"#EE297C"}, 
{"id":"2","title":"mytitle2","colour":"#EE412F"}, 
{"id":"3","title":"mytitle3","colour":"#F5821F"}, 
{"id":"4","title":"mytitle4","colour":"#00AEEF"}, 
{"id":"5","title":"mytitle5","colour":"#00B495"}, 
{"id":"6","title":"mytitle6","colour":"#006476"} 

]} 

它沒有在頁面上顯示任何內容。

在螢火控制檯我得到這個錯誤:

HTML文檔的字符編碼未聲明。如果文檔包含US-ASCII範圍之外的字符,則該文檔將在某些瀏覽器配置中呈現亂碼文本。頁面的字符編碼必須在文檔或傳輸協議中聲明。

那裏沒有json數據的痕跡

我在做什麼?

回答

5

頁面加載完成後,您不應該使用document.write(這當然是這種情況)。

如果您想將其寫入頁面,您需要創建HTML並將其附加。只需更換文件撰寫:

$('body').append('<p>'+fbResults.cats[0].title+'</p>'); 

更新:

你的榜樣,使一個完全合格的URL調用。該服務器是否與您正在運行該頁面的服務器完全相同?如果不是,XHR就會吃掉請求(有時候不會告訴你)。如果您需要跨域,則需要使用JSONp。如果您試圖在從網絡中提取數據的同時在本地運行,則會中斷。

+2

根據[MDN(https://developer.mozilla.org/ en-US/docs/DOM/document.write?redirectlocale = en-US&redirectslug = document.write),但我同意最好追加一個新元素或更新現有元素,而不是使用document.write – MrOBrian 2012-08-09 20:18:45

+0

嗯。兩種方法都是正確的(儘管......任何人在已經關閉的文檔上使用document.write都會遇到麻煩)。 – 2012-08-09 20:27:36

0

試試這個

$.each(fbResults.cats,function(index,item){ 
    document.write(item.title);  
    }); 

工作樣本:http://jsfiddle.net/zWhEE/8/

+0

好的,當我將數據添加到實際頁面時,您的代碼可以正常工作,但是當我更改代碼並添加「$ .getJSON('http://mydomain.com/api/get_cats',function(fbResults))時。雖然數據是完全一樣的,但是它並沒有讀取它,可能是因爲我正在PC桌面上運行頁面而不是在任何服務器上運行? – Satch3000 2012-08-09 20:27:07

+0

您是否正在進行跨域調用? – Shyju 2012-08-09 20:28:43

+0

那麼,我的html頁面是在我的PC桌面上,我試圖從一個在線頁面獲取數據...這是一個問題嗎? – Satch3000 2012-08-09 20:33:26