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入力すると、ブラウザにデータが表示されますか? (ファイルは到達可能ですか)。2 番目の推測ですが、ファイルが同一 (ローカルとサーバー) であると確信していますか?

編集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 に答える