1

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

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

数据是这样的

 {"message":"hello!"}

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

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

4

3 回答 3

1

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

在你的情况下使用alert(data.message);

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

于 2013-09-22T10:44:56.257 回答
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 的答案。

于 2013-09-22T10:52:18.870 回答
0

好的,如果这不起作用:

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

尝试这个:

function () {
     $.get('http://localhost/Location/loc', function(data){
         alert(data.message);
     }, 'json');
}
于 2013-09-22T10:54:38.473 回答