任何人都可以告诉我如何使用JavaScript访问此JSON数据?我尝试了$.each
循环,尝试使用[0]
进行访问,但所有内容都返回undefined
。
来自控制器的JSON数据:
{
"workers": {
"107": "Lisa",
"96": "Marvin",
"24": "Michael",
"23": "Patrick",
"116": "Peter"
}
}
Ajax Call:
$.ajax({
url: '/cake/workers/getWorkersAsJSON.json',
async: true,
success: function(data) {
// process
}
});
答案 0 :(得分:1)
您需要添加dataType: 'json'
$.ajax({
url: '/cake/workers/getWorkersAsJSON.json',
async: true,
dataType: 'json',
success: function(data) {
$.each(data.workers, function(i, v) {
console.log(i + ' : ' + v);
})
}
});
将数据类型指定为JSON然后将其转换为JavaScript对象,您可以使用$.each
进行迭代,或使用.
作为分隔符直接调出项目。以上示例有效。
仅供参考:您无需指定async: true
,因为默认情况下这是真的。
答案 1 :(得分:1)
实际上是$.ajax datatype:json
的jQuery简写。该函数称为getJSON
在您的示例中,它将实现如下:
$.getJSON( "/cake/workers/getWorkersAsJSON.json", function( data ) {
console.log(data);
});
这将获得JSON,并继续将检索到的数据作为数组记录到Console中。
答案 2 :(得分:1)
您好请检查以下代码。您正在发送对象,因此必须使用密钥访问数据。
$.ajax({
url: '/cake/workers/getWorkersAsJSON.json',
async: true,
success: function(data) {
console.log(data.workers.107) // should show "Lisa"
//if you need to use loop, try these
var keys = Object.keys(data.workers);
for(var key in keys){
console.log(data.workers[key]);
}
}
});
答案 3 :(得分:0)
尝试
var obj = $.parseJSON(data);
在success
函数中。
答案 4 :(得分:0)
它看起来不像一个数组,所以不确定它是否可以用'每个'循环(请参阅此处的JSON数组定义)。 很可能它可以作为
访问data.workers.107
如果不是最简单的理解结构的方法是在ajax回调中设置断点并检查JavaScript对象的结构。
答案 5 :(得分:0)
使用开源项目jinqJs
您可以像这样进行同步调用以获取JSON对象:
var result = jinqJs().from('/cake/workers/getWorkersAsJSON.json').select();
访问它的异步方式:
var result;
jinqJs().from('/cake/workers/getWorkersAsJSON.json', function(self) {
result = self.select();
});