繁体   English   中英

HTML,JavaScript和JSON代码有什么问题?

[英]What is wrong with this HTML, JavaScript and JSON code?

我在名为test.html的文件中包含以下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上进行了检查。

根据jsonlint.com,由于以下属性,您的JSON无效:

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

您需要删除前导零:

"id":1

或将数字设为字符串:

"id":"001"

有关更多详细信息,请参阅json.org中阐明的格式规则

大概永远不会到达您提到的行,因为JSON.parse()给出了上述错误。 (在浏览器的控制台中看不到错误吗?)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM