0

先看一下这个函数,注意json文件位于本地:

if (request) {
    request.open("GET", "flicks.json", true);
    request.onreadystatechange = function() {
        if (request.readyState == 4) { 
            var testi = request.responseText;
            var listmovies = JSON.parse(testi);
            console.log(typeof testi); // THIS RETURNS STRING
            console.log(typeof listmovies); // THIS RETURNS OBJECT - YAY!
          }
    };
    request.send(null);
}

太完美了,我得到了我想要的,一个包含 JSON 数据的对象。

但是当我更改 JSON 文件的位置并将其放在服务器上时:

request.open("GET", "http://www.myserver.com/flicks.json", true);

然后它返回此错误:

SyntaxError: JSON.parse: unexpected end of data 

示例 JSON

{
    "feed": "....",
    "description": "Fake List of Netflix movies",
    "modified": "2010-10-25T15:04:46Z",
    "generator": "I did it",
    "items": [
        {
            "title": "...",
            "link": "h...",
            "media": {
                "m": "..."
            },
            "date_taken": "..."
        },
        {
            "title": "...",
            "link": "...",
            "media": {
                "m": "..."
            },
            "date_taken": "..."
        }
    ]
}

为什么它在本地工作而不是其他方式?

4

1 回答 1

0

如果你把:http://www.myserver.com/flicks.json在浏览器中,你能看到数据吗?(文件是否可访问)。第二个猜测,您确定文件相同(本地与服务器)?

编辑1:试试这个。只是调用顺序略有变化。

if (request) {
    request.onreadystatechange = function() {
        if (request.readyState == 4) { 
            var testi = request.responseText;
            var listmovies = JSON.parse(testi);
            console.log(typeof testi); // THIS RETURNS STRING
            console.log(typeof listmovies); // THIS RETURNS OBJECT - YAY!
          }
    };
    request.open("GET", "http://www.myserver.com/flicks.json", true);
    request.send(null);
}
于 2013-07-31T09:51:56.390 回答