请求JSON加载到Javascript对象中.回应上的差异

Request JSON to load into Javascript object. Differences in response

本文关键字:回应 对象 JSON 加载 Javascript 请求      更新时间:2023-09-26

首先看一下这个函数,注意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": "..."
        }
    ]
}

为什么它在本地工作,而不是在另一种方式?

如果你把: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);
}