如何在ajax javascript中获取数据类型json的特定值密钥对?
我想从下面代码中的数据中获取status的值如何在ajax javascript中获取数据类型json的特定值密钥对?,javascript,ajax,json,Javascript,Ajax,Json,我想从下面代码中的数据中获取status的值 $.ajax({ dataType: "json", url: "calendar/php/date.php", type: "POST", data: { select: "%Y-%c-%e", where: "%Y-%c", d: y + "-" + m, order: "timestam
$.ajax({
dataType: "json",
url: "calendar/php/date.php",
type: "POST",
data: {
select: "%Y-%c-%e",
where: "%Y-%c",
d: y + "-" + m,
order: "timestamp, id"
},
beforeSend: function() { $('#loading').show(); },
success: function(data) {
sessionStorage[y+"-"+m] = JSON.stringify(data);
for (var key in data) {
$("<span class=\"label label-success\">" + Object.keys(data[key]).length + "</span>").prependTo($("#" + key));
console.log('key: ' + key + '\n' + 'value: ' + JSON.stringify(data));
}
},
complete: function() { $('#loading').fadeOut(200); }
});
以下是console.log结果的某些部分:
关键词:2014-11-11
值:{2014-11-11:[{0:3,1:2014-11-11:11:00,2:2014-11-28 10:12:00,3:test,4:test,5:0,6:7:8:9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:17:2014-11-11,id:3,时间戳:2014-11-11:11:11:11:00,toTimestamp:2014-11-11-28 10:12:00,标题:测试,地点:测试,状态:0,组织者:,组织联系人:,组织邮箱:0,笔记本电脑,投影仪,白板:0ng:0,备注:,选择器:2014-11-11}],2014-11-12:[测试,4:测试,5:1,6:09:0:0:0:0:11:0:14:0:15:0:16:17:2014-11-12,ID:15,时间戳:2014-11-1207:0700,toTime:2014-11-1203:0900,题目:测试,状态:1,组织者:,组织者电子邮件:投影仪:0,膝上型电脑:0,扬声器:0,指针:0,白板:0,MealAcActudi: 0,PAR {0:15,1:2014-11-1207:07:00,2 2014-11-1203:09:00,3国王:0,备注:选择器:2014-11-12}]}
我想获得status的值,即0,如上面的结果所示,以便将其包含在数据{…}中var key的for循环中,如果status为0,则将类“label success”更改为“label failure”。您能帮我吗?您好,可能我错了,但是
console.log('key: ' + key + '\n' + 'value: ' + JSON.stringify(data));
当您说JSON.stringifydata时,以字符串格式返回整个数据对象;
您需要在为数据指定一个特定键以从中读取值时返回的值:
console.log('key: ' + key + '\n' + 'value: ' + data[key]);
编辑:我不确定data[key]是否会返回一个[object]…如果它尝试JSON.stringifydata[key]
我还建议通过以下数据进行评级:
for(var i = 0; i < data.length; i++){}
这是有点嵌套的,因此请尝试了解您拥有的内容:
data = {
"2014-11-11": [],
"2014-11-12": []... }
此对象有一个返回对象长度的length方法。此方法允许您在数据对象上写入数据,该数据对象将为您提供2014-11-11作为密钥,使用此密钥您可以访问如下值:Data[key]这将返回您的数组…要从数组中读取数据,您必须再次写入数据[key][i]…现在您可以像这样读取每个数组元素中的数据
data[key][i]["status"];
希望这能有所帮助……不要费心去写这些代码:D试试这些代码
success: function(data) {
sessionStorage[y+"-"+m] = JSON.stringify(data);
for (var key in data) {
var status = data['status'];
var klass = status === 0 ? 'label-failure' : 'label-success';
$('<span class="label '+klass+'">' + Object.keys(data[key]).length + "</span>").prependTo($("#" + key));
console.log('key: ' + key + '\n' + 'value: ' + JSON.stringify(data));
}
},
$.ajax({
dataType: "json",
url: "calendar/php/date.php",
type: "POST",
data: {
select: "%Y-%c-%e",
where: "%Y-%c",
d: y + "-" + m,
order: "timestamp, id"
},
beforeSend: function() { $('#loading').show(); },
success: function(data) {
sessionStorage[y+"-"+m] = JSON.stringify(data);
for (var key in data) {
for (var i in data[key]) {
$("<span class=\"label " + ((data[key][i] === "0") ? "label-failure" : "label-success") + "\">" + Object.keys(data[key]).length + "</span>").prependTo($("#" + key));
}
console.log('key: ' + key + '\n' + 'value: ' + JSON.stringify(data));
}
},
complete: function() { $('#loading').fadeOut(200); }
});
只需将其硬编码为data[status]。硬编码的位置。我尝试了JSON.stringifydata[status],但得到的值是:undefined。你可能是对的。我尝试了data[key],但得到的结果是value:[object object object],这就是为什么我将其更改为JSON.stringifydata以获得整个对象。现在我只需要status.JSON.stringifydata[key]的值返回与JSON.stringifydata不同但相似的结果。我只需要status的值。您遇到的问题是,您有一个对象{},在这个对象中有一个元素,它包含一个对象数组,但我不太确定,因为您截断了输出,您必须获取数据[key]例如do forvar i=0;i
$.ajax({
dataType: "json",
url: "calendar/php/date.php",
type: "POST",
data: {
select: "%Y-%c-%e",
where: "%Y-%c",
d: y + "-" + m,
order: "timestamp, id"
},
beforeSend: function() { $('#loading').show(); },
success: function(data) {
sessionStorage[y+"-"+m] = JSON.stringify(data);
for (var key in data) {
for (var i in data[key]) {
$("<span class=\"label " + ((data[key][i] === "0") ? "label-failure" : "label-success") + "\">" + Object.keys(data[key]).length + "</span>").prependTo($("#" + key));
}
console.log('key: ' + key + '\n' + 'value: ' + JSON.stringify(data));
}
},
complete: function() { $('#loading').fadeOut(200); }
});