如何在ajax javascript中获取数据类型json的特定值-密钥对

How do I get specific value key pair in ajax javascript for datatype json?

本文关键字:密钥对 json 数据类型 ajax javascript 获取      更新时间:2023-09-26

我想从下面代码中的数据中获得"status"的值

$.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-111 11:11:00","2":"201411-28 10:12:00","3":"test","4":"test","5":"0",","17":"2014-11-11","id":"3","时间戳":"2014-20111-11 11:11:00","toTimestamp":"201411-28 10:12:00","title":"测试","location":"test","status":"0","organizer":","organizerContact":","organizerEmail":","投影仪":"0","笔记本电脑":"1","扬声器":"2","指针":"3","白板":"4","mediaCoverage":"5","parking":"6","remark":"8","selector":《2014-11-11》}],"2014-11-12":[{"0":"15","1":"2014-11-12 07:07:00,"17":"2014-11-12","id":"15","时间戳":"2014-20111-12 07:07:00","toTimestamp":"201411-12 03:09:00","title":"测试","location":"test","status":"1","organizer":","organizerContact":","organizerEmail":","投影仪":"0","笔记本电脑":"1","扬声器":"2","指针":"3","白板":"4","mediaCoverage":"5","parking":"6","remark":"8","selector":《2014-11-12》}]}

我想得到"status"的值,即0,如上面的结果所示,以便将其包括在for循环中(for(var key in data){…}),以便在状态为0的情况下将类"label success"更改为"label failure"。你能帮我吗?

你好,也许我错了,但

console.log('key: ' + key + ''n' + 'value: ' + JSON.stringify(data));

当您说JSON.stringfy(data)时,以字符串格式返回整个数据对象;当你给数据一个特定的密钥来读取值时,你想要返回的值:

console.log('key: ' + key + ''n' + 'value: ' + data[key]);

编辑:我不确定数据[key]是否会返回[object object]。。。如果它真的尝试JSON.stringfy(data[key])

我还建议使用重复数据

for(var i = 0; i < data.length; i++){} 

这使得它可读性强,并且被认为是提取数据的最高效的方式。

第2版:

这是你的目标:

{"2014-11-11":[{"0":"3","1":"2014-11-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","timestamp":"2014-11-11 11:11:00","toTimestamp":"2014-11-28 10:12:00","title":"test","location":"test","status":"0","organizer":"","organizerContact":"","organizerEmail":"","projector":"0","laptop":"0","speaker":"0","pointer":"0","whiteboard":"0","mediaCoverage":"0","parking":"0","remark":"","selector":"2014-11-11"}],"2014-11-12":[{"0":"15","1":"2014-11-12 07:07:00","2":"2014-11-12 03:09:00","3":"test","4":"test","5":"1","6":"","7":"","8":"","9":"0","10":"0","11":"0","12":"0","13":"0","14":"0","15":"0","16":"","17":"2014-11-12","id":"15","timestamp":"2014-11-12 07:07:00","toTimestamp":"2014-11-12 03:09:00","title":"test","location":"test","status":"1","organizer":"","organizerContact":"","organizerEmail":"","projector":"0","laptop":"0","speaker":"0","pointer":"0","whiteboard":"0","mediaCoverage":"0","parking":"0","remark":"","selector":"2014-11-12"}]}

这有点嵌套,所以试着了解一下你所拥有的:

data = { 
  "2014-11-11": [],
  "2014-11-12": []... }

这个对象有一个返回对象长度的length方法。这允许你在数据对象上提交数据。它会给你"2014-11-11"作为密钥,有了这个密钥,你可以访问你的值,如下所示:Data[key]这将返回你的数组。。。要从数组中读取数据,您必须再次提交data[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); }
});