未捕获的SyntaxError:读取JSON文件时出现意外的令牌

时间:2015-10-28 11:26:11

标签: javascript html json

我的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代码来解决问题?

1 个答案:

答案 0 :(得分:0)

您要做的是首先解析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,看看它是如何在没有这里的情况下完成的:

How can I open a JSON file in JavaScript without jQuery?

编辑:好吧,让我们整体来做。

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>