Что не так с этим HTML, JavaScript и JSON-кодом?

0

У меня есть следующий HTML-код в файле test.html. Как файл HTML, так и файл JSON ниже хранятся на сервере в одном каталоге.

<!DOCTYPE html>
<html>
<head>
<title>Shape Up</title>
<meta name="robots" content="noindex,follow">
<meta name="description" content="">
<meta name="keywords" content="">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script language="JavaScript" type="text/javascript">
function ajax_get_json()
{
    var hr = new XMLHttpRequest();
    hr.open("GET", "game.json", true);
    hr.setRequestHeader("Content-type", "application/json", true);
    hr.onreadystatechange = function()
    {
        if(hr.readyState == 4 && hr.status == 200)
        {
            var data = JSON.parse(hr.responseText);
            var results = document.getElementById("results");
            results.innerHTML = "";
            for(var obj in data)
            {
                results.innerHTML += data[obj].title;
            }
        }
    }
    hr.send(null);
    results.innerHTML = "requesting...";
}
</script>
</head>
<body>
<div id="results"></div>
<script language="JavaScript" type="text/javascript">
ajax_get_json();
</script>
</body>
</html>

Он извлекает данные из файла с именем game.json который хранится в том же каталоге.

{
    "level_001":
    {
        "id":001,
        "title":"Level 1",
        "difficulty":0,
        "comments":"this is how you complete level 1"
    },
    "level_002":
    {
        "id":002,
        "title":"Level 2",
        "difficulty":0,
        "comments":"this is how you complete level 2"
    }
}

Проблема в том, что results.innerHTML = ""; линия никогда не достигается. Зачем?

В браузере ошибок нет, я проверил это на Firefox и Safari.

  • 1
    Вы получаете какие-либо ошибки в консоли браузера?
  • 0
    Проверьте, разрешаете ли вы локальные XMLHttpRequests!
Показать ещё 1 комментарий
Теги:

1 ответ

3
Лучший ответ

Согласно jsonlint.com, ваш JSON недействителен из-за этих свойств:

"id":001
...
"id":002

Вам нужно либо удалить ведущие нули:

"id":1

или введите номера строк:

"id":"001"

Для получения дополнительной информации см. Правила формата, указанные в json.org

Предположительно, указанная вами линия никогда не была достигнута, потому что JSON.parse() дает сообщение об ошибке выше. (Вы не видите ошибку в консоли браузера?)

  • 0
    Спасибо, вот и все. Я приму ответ через 5 минут согласно запросу SO.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню