访问JSON编码对象的值

时间:2013-09-22 10:43:29

标签: javascript json jquery

我正在从我的控制器向我的视图页面发送一个JSON编码数组。我在我的视图页面上执行此操作以获取数据:

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

数据就像这样

 {"message":"hello!"}

我正在提醒消息的价值但是我的警报给了我undefined。我的问题是如何访问JSON数组的值?

我是JSON的新手,所以我对JSON了解不多。

3 个答案:

答案 0 :(得分:1)

您的数据包含单个对象,而不是数组。

在您的情况下,请改用alert(data.message);

使用[]括号定义数组,例如[{message:"hello"}, {message:"world"}]是一个包含两个对象的数组。

答案 1 :(得分:1)

尝试将您的功能更改为:

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

这是因为jQuery可能不知道响应数据是JSON,所以假设它是纯文本。您可以在$.get中将其显式指定为修订代码中的最后一个参数,或者将服务器配置为使用{Content}类型标头application/json发送响应。

我假设这是因为message不是字符串的属性,这就是你未定义的原因。

或者,您可以使用$.getJSON

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

另请注意,我已将警报更改为data.message。请参阅Knaģis的答案进行解释。

答案 2 :(得分:0)

好的,如果这不起作用:

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

试试这个:

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