2013-09-22 46 views
1

我從我的控制器發送JSON編碼數組到我的視圖頁面。我爲我的視圖頁面上這樣做是爲了獲得數據:訪問JSON編碼對象的值

function() { 
    $.get('http://localhost/Location/loc', function(data){ 
     alert(data[0].message); 
    }); 
} 

的數據是這樣的

{"message":"hello!"} 

我提醒消息的價值,但我警告給我undefined。我的問題是我如何訪問JSON數組的值?

我是JSON的新手,所以我對JSON不太瞭解。

+0

嘗試'警報(data.message);' – srain

+0

的可能重複[如何在JavaScript解析JSON] (http://stackoverflow.com/questions/4935632/how-to-parse-json-in-javascript) – DevlshOne

+0

[json對象的訪問屬性]的可能重複(http://stackoverflow.com/questions/12346203/access -property-of-json-object) –

回答

1

試着改變你的函數:

function() { 
    $.get('http://localhost/Location/loc', function(data){ 
     alert(data.message); 
    }, 'json'); 
} 

這是因爲jQuery可能不知道的是,響應數據是JSON,因此它是假設它的明文。您可以在$.get中明確指定它作爲修改代碼中的最後一個參數,或者將服務器配置爲使用HTTP Content-Type標頭application/json發送響應。

我假設這是因爲message不爲String的屬性,這就是爲什麼你得到不確定的。

或者,您也可以使用$.getJSON

function() { 
    $.getJSON('http://localhost/Location/loc', function(data){ 
     alert(data.message); 
    }); 
} 

另外請注意,我已經改變了警惕data.message。請參閱Knaģis的解答。

+0

thankyouuuuuu您的解決方案適用於我...... – mynameisbutt

1

您的數據包含單個對象,而不是數組。

在你的情況下使用,而不是alert(data.message);

使用[]括號來定義數組,例如[{message:"hello"}, {message:"world"}]是一個包含兩個對象的數組。

+0

@knagis沒有工作......我得到undefined – mynameisbutt

+0

@mynameisbutt - 您是否使用Fiddler或其他工具查看服務器返回的確切內容? –

0

OK,如果這不起作用:

function() { 
    $.get('http://localhost/Location/loc', function(data){ 
     alert(data.message); 
    }); 
} 

試試這個:

function() { 
    $.get('http://localhost/Location/loc', function(data){ 
     alert(data.message); 
    }, 'json'); 
} 
+0

以及謝謝你...它爲我工作..但作爲溜冰場張貼它,所以我標記他的答案。非常感謝你 – mynameisbutt

+0

@mynameisbutt,沒關係,祝你好運! – srain

+0

thankyouuuuu非常多 – mynameisbutt