在实时服务器上未定义,但在localhost上运行

时间:2012-04-08 16:02:55

标签: javascript jquery ajax

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

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

两个console.log都显示jsoni已定义......

Console.log输出

  

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

     

我:48

     

未捕获的TypeError:无法读取未定义的属性'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);
 }

});

1 个答案:

答案 0 :(得分:3)

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

请尝试将第一行更改为:

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