我需要读取jason文件以将一些数据放置在表中,虽然已经完成了,但是程序给了我一个错误
这将读取从Postgresql中的数据库生成的文件
我正在读取的数据如下
<Locations>
<Ce>188</Ce>
<Id>1</Id>
<Lat>10.330385</Lat>
<Lon>-75.50266</Lon>
<N_2>1000</N_2>
<N_3>2000</N_3>
<Nombre>mce_cartagena1</Nombre>
<Ult_t>2019-07-08 21:03:25</Ult_t>
<alarm>0</alarm>
<error i:nil="true"/>
</Locations>
<Locations>
<Ce>-53</Ce>
<Id>2</Id>
<Lat>4.789242</Lat>
<Lon>-74.054513</Lon>
<N_2>1000</N_2>
<N_3>2000</N_3>
<Nombre>mce_santo_tomas</Nombre>
<Ult_t>2019-07-08 21:02:30</Ult_t>
<alarm>0</alarm>
<error i:nil="true"/>
</Locations>
我在这里读取数据
var url = 'http://190.85.6.14/mills_status/Api',
params = {
method: 'GET',
mode: 'cors',
redirect: 'follow',
headers: new Headers({
'Content-Type': 'application/json'
})
};
var request = new Request(url, params);
fetch(request).then(r => r.json())
.then(datos => {
tabla(datos);
})
.catch(e => console.error('Something went wrong',e));
在这里,我浏览数据以将它们放置在向量中
function tabla(datos) {
contenido.innerHTML = '';
for (var i = 0; i <= datos.length; i++) {
cordenadasLo[i] = parseFloat(datos[i].Lon);
cordenadasLa[i] = parseFloat(datos[i].Lat);
nivel[i] = parseInt(datos[i].alarm);
他正确读取了数据,但错误仍然存在
Something went wrong TypeError: Cannot read property 'Lon' of undefined
at tabla (JavaScript.js:80)
at JavaScript.js:71
(anonymous) @ JavaScript.js:73
答案 0 :(得分:0)
如评论中所述,您正在尝试将XML解析为JSON,但这是行不通的,因为XML和JSON是完全不同的两件事。
要解决此问题,请用解析XML的代码替换您的r.json()
调用。我改编了this answer中的代码来做到这一点。
fetch(request).then(r => r.text())
.then(str => (new window.DOMParser()).parseFromString(str, "text/xml"))
.then(datos => { tabla(datos); })
.catch(e => console.error('Something went wrong',e));
注意:您需要调整tabla
函数以使用类似datos.getElementsByTagName("Locations")
的东西遍历数据
如果您使用的是node.js,则可以改用xml-js
。