JQuery $ .each只返回JSON的第一项

时间:2012-03-20 10:08:09

标签: jquery json

我有一个像这样的JSON对象:

{
    "mesta": [
        {
            "latlng": [49.094046,15.893415],
            "nazev": "Město Jaroměřice nad Rokytnou"
        },
        {
            "latlng": [49.44119,18.09461],
            "nazev": "Obec Vidče"
        },
        {
            "latlng": [49.5047,17.10139],
            "nazev": "Obec Smržice"
        }
    ],
    "orp": [
        {
            "latlng": [49.2156,15.87819],
            "nazev": "Město Třebíč (ORP)"
        },
        {
            "latlng": [49.457623,18.142622],
            "nazev": "Město Rožnov pod Radhoštěm (ORP)"
        }
    ]
}

当我尝试迭代对象时,我只得到警告的第一项(mesta)。根据jsonlint,语法是正确的。我错过了什么吗?

function loadMarkers() {
    $.getJSON('data.json', function(data) {

        $.each(data,function(index,obj) {
                alert(index);
        });
    });
}

4 个答案:

答案 0 :(得分:0)

请检查您的回复。 $.each works fine

答案 1 :(得分:0)

问题不在于你的JSON对象或$ .each函数我能够在这里迭代上述数据中的两个键http://jsfiddle.net/d4udts/N2C3j/

问题似乎是你的getJSON调用我怀疑你的调用只返回第一个元素你调试代码并看看调用的获取的json数据是什么

答案 2 :(得分:0)

问题是来自服务器的响应,而不是您的JavaScript。我在页面的控制台中运行了以下代码:

$.getJSON('data.json', function(data) { 
    console.log(data); 
});

结果如下:

enter image description here

如您所见,返回的对象中只有一个属性(mesta,一个包含三个元素的数组)。

您可以visiting the data.json file directly确认一下。

答案 3 :(得分:0)

您正在选择每个具有对象数组的对象。

解决方案可能是你将每个都放在每个或不使用jQuery.each 但是像...一样简单(假设返回的对象称为数据)

for(obj in data){
    for(entry in data[obj]){
    {
       console.log(entry)
       ....
    }
}