2015-10-15 2 views
1

Я использую простой запрос JSON Ajax для получения некоторых данных JSON. Но я все время пытаюсь использовать объект JSON я получаю следующую проблему:Простой запрос: Uncaught TypeError: Невозможно прочитать свойство 'length' undefined

Uncaught TypeError: Cannot read property 'length' of undefined

$(document).on('pageinit', '#home', function() { 
    $.ajax({ 
     url: "http://localhost/documents.json", 
     dataType: "json", 
     type: 'GET', 
     async: true, 
     success: function(result) { 
      //ajax.parseJSON(result); 
      $.each(result, function(idx, obj) { 
       alert(obj.name); 
      }); 
     }, 
     error: function(request, error) { 
      alert('Network error has occurred please try again!' + ' ' + request + ' ' + error); 
     } 
    }); 
}); 

мой файл JSON является действительным, и выглядит следующим образом:

{ 
    "books": [{ 
    "id": "01", 
    "name": "info", 
    "dateiname": "info.pdf" 
    }, { 
    "id": "02", 
    "name": "agb", 
    "dateiname": "agb.pdf" 
    }, { 
    "id": "03", 
    "name": "raumplan", 
    "dateiname": "raumplan.pdf" 
    }, { 
    "id": "04", 
    "name": "sonstiges", 
    "dateiname": "sonstiges.pdf" 
    }, { 
    "id": "05", 
    "name": "werbung", 
    "dateiname": "werbung.pdf" 
    }] 
} 
+0

Это результат, когда вы используете console.log? – guradio

+0

How/Where вы проверяете 'length' of What? – Tushar

+0

@Pekka Да, это консольный выход. Я ничего не проверяю. Я просто хотел бы проанализировать JSON-файл и добавить его в список. – jublikon

ответ

0

Вы должны выполнить что-то вроде следующее:

if(result && result["books"]) { 
    $.each(result["books"], function(idx, obj) { 
     alert(obj.name); 
    }); 
} 
+0

'jQuery.each' может зацикливаться на объекте. – Magus

+0

@Magus Да, 'jQuery.each' может зацикливаться на объекте, но' result' не является массивом. – Flea777

0

jQuery.each может сделать эту ошибку, если вы предоставляете undefined значение. Но result не может быть undefined или jQuery будет вызывать ошибку синтаксического анализа JSON. Не менее result - пустой объект {} (или пустой массив []).

Ваш код никогда не читает length ничего. Поэтому я предполагаю, что ваша ошибка находится где-то еще в вашем коде.

Двойную проверку ошибки в консоли. Вы должны иметь точную строку ошибки. И стек тоже.

Но в вашем коде все еще есть ошибка. У вас должно быть следующее:

$.each(result.books, function(idx, obj) { 
    alert(obj.name); 
}); 
Смежные вопросы