未捕获的语法错误:读取JSON文件时出现意外的标记

Uncaught SyntaxError: Unexpected token while reading JSON file

本文关键字:意外 文件 读取 语法 错误 JSON      更新时间:2023-09-26

我的JSON文件是:

{
    "myjson": [{
        "id": "1",
        "name": "x"
    }, {
        "id": "2",
        "name": "y"
    }]
}

我的HTML文件读起来是这样的:

<div id="id01"></div>
<script>
function myjson(arr) {
    var out = "";
    var i;
    for(i = 0; i<arr.length; i++) {
        out += '<a href="' + arr[i].id + '">' + arr[i].name + '</a><br>';
    }
    document.getElementById("id01").innerHTML = out;
}
</script>
<script src="js/myjson.json"></script>

但我得到了这个错误:Uncaught SyntaxError: Unexpected token in line 2

我无法更改JSON文件,如何通过更改HTML/JS代码来解决问题?

您要做的是首先解析JSON文件,然后对数组使用您的函数。您可以使用JQuery从文件中获取JSON,如下所示:

http://api.jquery.com/jquery.getjson/

$.getJSON("js/myjson.json", function(json){
    // json is an object which contains the array called "myjson"
    // now you can pass that array into your function like this:
    myjson(json.myjson);
})

如果你不想使用JQuery,看看没有这里是怎么做的:

如何在没有jQuery的情况下用JavaScript打开JSON文件?

编辑:好的,让我们作为一个整体来做。

HTML:

<div id="id01"></div>

Javascript:

function myjson(arr) {
    var out = "";
    var i;
    for(i = 0; i<arr.length; i++) {
        out += '<a href="' + arr[i].id + '">' + arr[i].name + '</a><br>';
    }
    document.getElementById("id01").innerHTML = out;
}
function loadJSON(path, success, error)
{
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function()
    {
        if (xhr.readyState === XMLHttpRequest.DONE) {
            if (xhr.status === 200) {
                if (success)
                    success(JSON.parse(xhr.responseText));
            } else {
                if (error)
                    error(xhr);
            }
        }
    };
    xhr.open("GET", path, true);
    xhr.send();
}
loadJSON('js/myjson.json', function(data){ myjson(data.myjson);}, function(xhr) {console.error(xhr); });

您可以使用这样的脚本标记将Javascript放入HTML中

<script language="javascript" type="text/javascript">//Javascript goes here</script>

或者把它放在一个单独的文件中,然后像这个一样链接到你的HTML中

<script language="javascript" type="text/javascript" src="js/myscript.js"></script>