0

我想使用 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 的控制台:我看到 1 个数组(5 个对象)=> OK。

如何显示电子邮件地址?示例:电子邮件:pippo@email.com ... ... ... ...

4

1 回答 1

0

首先,JavaScript 的“for-in”循环遍历数组的键(在此处阅读更多内容),而不是数组的每个元素。

其次,您的 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); });
于 2017-05-03T05:05:23.547 回答