从数据库中输出获取到的JSON数据

3
我从数据库中读取数据作为Json对象。我还将这些数据带到另一个页面,在那里我想展示这些数据,但问题在于如何展示这些数据。
以下是我展示数据的代码: 请检查代码中的注释!!!

var xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {

            object = JSON.stringify(this.responseText);
            console.log(object);


            console.log(object);
            //console.log(object['data'][0]['title']); ERROR

            object2 = JSON.parse(object)
            console.log(object2);
            //console.log(object2['data'][0]['title']); ERROR
            console.log(object2.title); //here  ENDEFINED




            objectParsed = JSON.parse(
                '{"ID":"1","type":"zima","title":"skijanje","description":"Lorem ipsum dolor sit amet,sed diam voluptua.","people":"From 2 to 8","available":"From November to February","price":"From 350 to 500","numTaken":"0"}'
            );

            console.log(objectParsed);
            console.log(objectParsed.title); // here I got the right ouput which is SKIJANJE

            //document.getElementById("test").innerHTML = object.title;
        }
    };
    xmlhttp.open("GET", "readTourData.php", true);
    xmlhttp.send();

以下是从“readTourData”获取的数据: enter image description here 最后,这是我尝试显示数据时的输出: enter image description here 变量对象看起来像这样(console.log(object)): enter image description here 我从数据库中得到的数据: data: [{ID: "1", type: "zima", title: "skijanje",…}] 0: {ID: "1", type: "zima", title: "skijanje",…} ID: "1" available: "From November to February" description: "Lorem ipsum dolor sit amet,sed diam voluptua." numTaken: "0" people: "From 2 to 8" price: "From 350 to 500" title: "skijanje" type: "zima"
控制台输出:
--第一个控制台--> console.log(object): "\r\n data:[{\"ID\":\"1\",\"type\":\"zima\",\"title\":\"skijanje\",\"description\":\"Lorem ipsum dolor sit amet,sed diam voluptua.\",\"people\":\"From 2 to 8\",\"available\":\"From November to February\",\"price\":\"From 350 to 500\",\"numTaken\":\"0\"}] \r\n\r\n"
--第二个控制台--> console.log(object2): data:[{"ID":“1”,“type”:“zima”,“title”:“skijanje”,“description”:“Lorem ipsum dolor sit amet,sed diam voluptua。”,“people”:“From 2 to 8”,“available”:“From November to February”,“price”:“From 350 to 500”,“numTaken”:“0”}]
--第三个控制台--> console.log(object2.title): 未定义
--第四个控制台--> console.log(objectParsed): {ID:“1”,类型:“zima”,标题:“skijanje”,描述:“Lorem ipsum dolor sit amet,sed diam voluptua。”,人们:“从2到8”,…} ID: “1” available: “From November to February” description: “Lorem ipsum dolor sit amet,sed diam voluptua.” numTaken: “0” people: “From 2 to 8” price: “From 350 to 500” title: “skijanje” type: “zima” proto : Object
最后一个控制台--> console.log(objectParsed.title): Skijanje

2
正如您在图像中所看到的那样,数据是一个数组,而不是一个对象。在尝试访问title属性之前,请先访问数组元素。另外,为什么要将responseText转换为字符串,它已经是一个字符串了吗? - CertainPerformance
我在获取标题值之前尝试访问数组元素...但是它没有起作用。因此,我使用 stringify(this.responseText),因为如果没有它就无法正常工作。我在没有使用 stringify 时遇到以下错误:Uncaught ReferenceError: 对象未定义,位于 XMLHttpRequest.xmlhttp.onreadystatechange。 - Abu Machi
@AbuMachi,你能分享一下你尝试访问数组元素的代码吗? - Raeesaa
我尝试了以下几种方式: console.log(object[2]); console.log(object[2]['title']); console.log(object[2].title);但是它们都不起作用。 - Abu Machi
你是在 JSON.parse() 之后还是之前记录日志的?你得到了什么日志输出?仅仅说“不起作用”无法帮助我们理解问题。 - Raeesaa
解析后...输出未定义。 - Abu Machi
1个回答

0
问题是没有object.titleobject对象似乎是一个数组。
数组中的每个对象似乎都有一个title属性。
因此,您应该能够使用类似以下方式访问数组中第一个对象的标题:object[0].titleobject[0]['title'] 通常最好打印对象以查看所有嵌套,例如:
console.log(JSON.stringify(object,null,1));

这样做会更清楚,你需要访问data属性以及该属性的外观。


我尝试了你提出的每一个建议,但是没有一个能够帮助我解决这个问题。我遇到了以下错误:

未捕获的类型错误:无法读取未定义的属性'0' 在XMLHttpRequest.xmlhttp.onreadystatechange处
- Abu Machi
我现在会做。 - Abu Machi
我编辑了它...你可以看到我从表格中删除了两行...以便更容易进行测试。 - Abu Machi
只是字符串而已...我将对象放入控制台输出。 - Abu Machi
所以你展示的代码和生成的输出不同。尝试确定哪一行代码生成了什么输出,这使得帮助你变得非常困难。 - Prisoner
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接