0

Apple TV 用の TVML アプリケーションを構築しています。このコードを実行してリモート サーバーにリクエストを送信すると、次のエラーが表示されます: SyntaxError: JSON Parse error: Unexpected EOF. application.js ファイルからコードを実行し、アプリケーションの初期ビューに入力しようとしています。どんな助けでも大歓迎です。

    loadData("https:/xxx.xxx.net")

    function loadData(url) {
      var xhr;
      var jsonData;
      xhr = new XMLHttpRequest();
      xhr.responseType = "json";
      xhr.onreadystatechange = function() {
        if (xhr.status == 200) {
        jsonData = JSON.parse(xhr.responseText);
        console.log(jsonData);
        };
      };

      xhr.open("GET", url, true);
      xhr.send();
      if (jsonData != undefined) { return jsonData }
    };

Roku などの他のデバイスは、同じ API を使用して正しく機能します。

{
    "playlists": [
        {
            "id": 8,
            "title": "test",
            "description": "new playlist test",
            "cover_url": "http://598-1446309178.png"
        },
        {
            "id": 9,
            "title": "test1",
            "description": "lives",
            "cover_url": "http://754-1446309324.jpg"
        },
        {
            "id": 10,
            "title": "test2",
            "description": "video games",
            "cover_url": "http://6173-1446310649.jpg"
        },
        {
            "id": 11,
            "title": "test4",
            "description": "little",
            "cover_url": "http://dd6-1446312075.jpg"
        }
    ]
}
4

1 に答える 1

0

Safari を使用してアプリをデバッグできます。アプリが実行されたら、「Develop / Simulator / {your app}」を選択します。コードのその部分は問題ないように見えますが、xhr.responseText が何であるかを確認してください。空が返される場合があります。あなたの他のエラーは、以下の「true」を使用するときに非同期リクエストを行っていることです:

xhr.open("GET", url, true);

関数にコールバックを提供し、そのコールバックを使用する必要があります。エラー最初のコールバック スタイルを使用しています。

function loadData(url, callback) {
      var xhr;
      var jsonData;
      xhr = new XMLHttpRequest();
      xhr.responseType = "json";
      xhr.onreadystatechange = function() {
        if (xhr.status == 200) {
        try{
            jsonData = JSON.parse(xhr.responseText);
        } catch(e) {
            return callback('json parsing error');
        }
        callback(null, jsonData);
        console.log(jsonData);
        };
      };

      xhr.open("GET", url, true);
      xhr.send();
    };
于 2015-11-09T08:42:35.377 に答える