SyntaxError: JSON Parse error: Unexpected EOF using TVJS Framework
SyntaxError: JSON Parse error: Unexpected EOF using TVJS Framework
我正在为 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"
}
]
}
您可以使用 Safari 调试您的应用程序。
一旦您的应用 运行,请选择 "Develop / Simulator / {your app}"。
您的那部分代码看起来不错,但请检查 xhr.responseText 是什么,它可能 return 为空。
您的另一个错误是您在使用下面的 "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();
};
我正在为 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"
}
]
}
您可以使用 Safari 调试您的应用程序。 一旦您的应用 运行,请选择 "Develop / Simulator / {your app}"。 您的那部分代码看起来不错,但请检查 xhr.responseText 是什么,它可能 return 为空。 您的另一个错误是您在使用下面的 "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();
};