Titanium Appcelerator 用 API 解析 Youtube JSON
Titanium Appcelerator parse Youtube JSON with API
我在论坛上做了一个研究,我感到很困惑。我的演示项目是使用 Alloy MVC 创建的。我想从 Youtube API 中解析一个 JSON 与顶级相关的烹饪视频,例如,并将它们显示在 TableView 中。
任何人都可以告诉我如何去做吗?
我是新人。
这是我到目前为止所做的代码:
视频XML
<Alloy>
<Window class="container">
<View id="main" onClick="youtubeFeed">
<Label class="header">YouTube Channel</Label>
<TableView id="results">
</TableView>
</View>
</Window>
</Alloy>
Videos.js
function youtubeFeed () {
var apiKey = 'MY_API_KEY';
var perPage = 6;
var search = "Cooking";
var description;
var val;
var id;
var category = "News";
var query = 'https://www.googleapis.com/youtube/v3/search?part=snippet&q=search&maxResults=per_page&videoCategoryId=category&safesearch=strict&key=apikey';
var response = JSON.parse(this.responseText);
require("/api").create({
url: query,
type: "GET",
success: onSuccess,
error: onError
});
function onSuccess(e){
console.log(e.data);
}
function onError(e){
console.log("error");
}
}
你需要在xhr的帮助下调用实际的API url。首先看看 https://github.com/m1ga/titanium-libraries/blob/master/api.js
在您的 projectname/app/ 文件夹中创建一个 lib 文件夹,并将 js 文件放在那里,然后在您的函数中这样调用它:
require("/api").create({
url: query,
type: "GET",
success: onSuccess,
error: onError
});
function onSuccess(e){
console.log(e.data);
}
function onError(e){
console.log("error");
}
并确保您的查询字符串正确。看起来您采用了 php 示例,因为它使用 $ 和 a 。最后连接。
我不确定您使用哪个库来获取 JSON,但是在您获取它之前解析 JSON 不起作用。
这是它应该如何工作的一个基本示例:
var url = 'https://www.googleapis.com/youtube/v3/search?part=snippet&q=search&maxResults=per_page&videoCategoryId=category&safesearch=strict&key=apikey';
var xhr = Titanium.Network.createHTTPClient({
onload: function() {
var response = JSON.parse(this.responseData);
// you've got your JSON here, after the API call succeeded
},
timeout: timeout
});
xhr.open('GET', url);
xhr.send();
你已经从 Youtube API 得到了你的 JSON 答案,现在 Miga 和 Rene 给出了你提示。
您可能想阅读一些 guides 以了解从 Youtube 返回时您的 JSON 对象的样子(使用他们的 API 资源管理器)。
阅读 Titanium.UI.TableView 文档,您应该为 response.items
中的每个元素添加一个 TableViewRow
:
for (var i=0; i<response.items.length; i++){
var video, row, videoTitle;
video = response.items[i];
row = Ti.UI.createTableViewRow({
width: Ti.UI.FILL,
height: 100
}),
videoTitle = Ti.UI.createLabel({
text: video.snippet.title,
videoId: video.id.videoId, // custom prop
width: Ti.UI.SIZE,
height: 80
});
row.add(videoTitle);
$.results.appendRow(row);
}
监听来自您的 TableView
的 click
事件,以便您可以打开一个新的控制器来播放指定的视频:
$.results.addEventListener('click', function onClick(event) {
var row = event.row,
videoId = row.videoId;
// TODO...
});
祝你好运!
我在论坛上做了一个研究,我感到很困惑。我的演示项目是使用 Alloy MVC 创建的。我想从 Youtube API 中解析一个 JSON 与顶级相关的烹饪视频,例如,并将它们显示在 TableView 中。 任何人都可以告诉我如何去做吗? 我是新人。
这是我到目前为止所做的代码:
视频XML
<Alloy>
<Window class="container">
<View id="main" onClick="youtubeFeed">
<Label class="header">YouTube Channel</Label>
<TableView id="results">
</TableView>
</View>
</Window>
</Alloy>
Videos.js
function youtubeFeed () {
var apiKey = 'MY_API_KEY';
var perPage = 6;
var search = "Cooking";
var description;
var val;
var id;
var category = "News";
var query = 'https://www.googleapis.com/youtube/v3/search?part=snippet&q=search&maxResults=per_page&videoCategoryId=category&safesearch=strict&key=apikey';
var response = JSON.parse(this.responseText);
require("/api").create({
url: query,
type: "GET",
success: onSuccess,
error: onError
});
function onSuccess(e){
console.log(e.data);
}
function onError(e){
console.log("error");
}
}
你需要在xhr的帮助下调用实际的API url。首先看看 https://github.com/m1ga/titanium-libraries/blob/master/api.js
在您的 projectname/app/ 文件夹中创建一个 lib 文件夹,并将 js 文件放在那里,然后在您的函数中这样调用它:
require("/api").create({
url: query,
type: "GET",
success: onSuccess,
error: onError
});
function onSuccess(e){
console.log(e.data);
}
function onError(e){
console.log("error");
}
并确保您的查询字符串正确。看起来您采用了 php 示例,因为它使用 $ 和 a 。最后连接。
我不确定您使用哪个库来获取 JSON,但是在您获取它之前解析 JSON 不起作用。
这是它应该如何工作的一个基本示例:
var url = 'https://www.googleapis.com/youtube/v3/search?part=snippet&q=search&maxResults=per_page&videoCategoryId=category&safesearch=strict&key=apikey';
var xhr = Titanium.Network.createHTTPClient({
onload: function() {
var response = JSON.parse(this.responseData);
// you've got your JSON here, after the API call succeeded
},
timeout: timeout
});
xhr.open('GET', url);
xhr.send();
你已经从 Youtube API 得到了你的 JSON 答案,现在 Miga 和 Rene 给出了你提示。
您可能想阅读一些 guides 以了解从 Youtube 返回时您的 JSON 对象的样子(使用他们的 API 资源管理器)。
阅读 Titanium.UI.TableView 文档,您应该为 response.items
中的每个元素添加一个 TableViewRow
:
for (var i=0; i<response.items.length; i++){
var video, row, videoTitle;
video = response.items[i];
row = Ti.UI.createTableViewRow({
width: Ti.UI.FILL,
height: 100
}),
videoTitle = Ti.UI.createLabel({
text: video.snippet.title,
videoId: video.id.videoId, // custom prop
width: Ti.UI.SIZE,
height: 80
});
row.add(videoTitle);
$.results.appendRow(row);
}
监听来自您的 TableView
的 click
事件,以便您可以打开一个新的控制器来播放指定的视频:
$.results.addEventListener('click', function onClick(event) {
var row = event.row,
videoId = row.videoId;
// TODO...
});
祝你好运!