我想使用HTML,Javascript和Socrata开发一个简单的网页。
我写这个页面:
<body>
<script src="../lib/soda-js.bundle.js"></script>
<script>
var consumer = new soda.Consumer('dati.lombardia.it');
consumer.query()
.withDataset('mmyz-duph')
.limit(100)
.where({ localita : "Suzzara" })
.getRows()
.on('success', function(rows) { console.log(rows); alert('Ok'); })
.on('error', function(error) { console.error(error); alert('Ci sono problemi'); });
var righe = consumer.query()
.withDataset('mmyz-duph')
.limit(100)
.where({ localita : "Suzzara" })
.getRows();
/*
--- Don't work! ---
for (item in righe) {
document.write("Email: ");
document.write(item.email);
document.write('<br>');
};
*/
document.write('<br>');
document.write('Ho finito di elaborare i dati');
</script>
</body>
在Suzzara(一个意大利小城市)有一个化学家的商店列表,我想写电子邮件地址(有5个商店)。 来自Firefox的consolle:我看到1个数组(5个对象)=&gt;行。
如何显示电子邮件的地址? 例: 电子邮件:pippo@email.com ...... ...... ......
答案 0 :(得分:0)
首先,JavaScript的“for-in”循环遍历数组的键(read more here),而不是数组的每个元素。
其次,你的JS正在执行一个AJAX调用,所以你的当前for循环将在你从Socrata获得数据之前执行,所以没有什么可以循环的。这就是使用.on()
函数的原因,因此您可以在返回数据后执行代码。
var consumer = new soda.Consumer('dati.lombardia.it');
consumer.query()
.withDataset('mmyz-duph')
.limit(100)
.where({ localita : "Suzzara" })
.getRows()
.on('success', function(rows) {
// since you're using a for-in loop, this is how it'd work
for (i in rows) {
console.log(rows[i]['email']);
}
})
.on('error', function(error) { console.error(error); });