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");
}
}

你已经从Youtube API得到了JSON答案,现在MigaRene给了你提示。
有一些指南,你可能想知道你的JSON对象是什么样子,当从Youtube回来(使用他们的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...
});

祝你好运!

您需要在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();

相关内容

  • 没有找到相关文章

最新更新