1

我在网页上有一个带有标记的谷歌地图,上面附有点击监听器。

问题:localhost上,当我单击地图标记时,一切都按预期工作。但是,在上传到服务器并尝试实时版本后,单击标记会导致错误Uncaught TypeError: Cannot read property 'listing_id' of undefined

两者都console.log表明json并被i定义...

Console.log 输出

[对象,对象,对象,对象,对象,对象,对象,对象,对象,对象,对象,对象,对象,对象,对象,对象,对象,对象]

我:48

未捕获的类型错误:无法读取未定义的属性“listing_id”

为什么会这样?

JS代码

$.getJSON(......., function(json) {

for(var i = 0; i < json.length; i++) {
    (function(i) {
        google.maps.event.addListener(markers[json[i].listing_id], 'click', function() {
            console.log('json: ' + json);
            console.log('i: ' + i);
            console.log('json[i].listing_id :' + json[i].listing_id);

            // Mark currently opened marker
            markers[json[i].listing_id].setIcon(base_url + 'images/template/markers/listing_black.png');

            //...
         });
     })(i);
 }

});
4

1 回答 1

3

看起来您没有将数据传递给回调函数。

尝试将您的第一行改为:

$.getJSON(......., function(json) {
于 2012-04-08T16:05:44.690 回答