Javascript Tianium Appcelerator使用API解析Youtube JSON
我在论坛上做了一个调查,结果弄糊涂了。我的演示项目是用Alloy MVC创建的。我想解析一个来自Youtube API的JSON,其中包含烹饪的顶级相关视频,并在TableView中显示它们。 有人能告诉我怎么做吗? 我是新来的 这是我迄今为止所做的代码: 视频XMLJavascript Tianium Appcelerator使用API解析Youtube JSON,javascript,json,youtube-api,titanium,appcelerator,Javascript,Json,Youtube Api,Titanium,Appcelerator,我在论坛上做了一个调查,结果弄糊涂了。我的演示项目是用Alloy MVC创建的。我想解析一个来自Youtube API的JSON,其中包含烹饪的顶级相关视频,并在TableView中显示它们。 有人能告诉我怎么做吗? 我是新来的 这是我迄今为止所做的代码: 视频XML <Alloy> <Window class="container"> <View id="main" onClick="youtubeFeed"> <Label class="hea
<Alloy>
<Window class="container">
<View id="main" onClick="youtubeFeed">
<Label class="header">YouTube Channel</Label>
<TableView id="results">
</TableView>
</View>
</Window>
</Alloy>
您需要在xhr的帮助下调用实际的API url。首先,请看一看 在projectname/app/folder中创建一个lib文件夹,并将js文件放在那里,然后在yor函数中这样调用它:
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之前解析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();
既然Miga和Rene给了您提示,您已经从Youtube API获得了JSON答案。
您可能想阅读一些内容,以了解从Youtube返回时JSON对象的外观(使用他们的API资源管理器) 阅读文档时,您应该为
响应中的每个元素添加一个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);
}
祝你好运 非常感谢您的快速回复。我还修改了您提到的查询字符串,因为我使用了一个php示例。不幸的是,我没有让它工作。如果你告诉我们错误是什么,或者你从哪里得到了Stuck,这会有所帮助。我没有错误,但当我在emulator上运行它时,什么都没有出现。对不起,我问了个愚蠢的问题。我是否需要其他东西来将JSON解析为XML中的TableView?仍然缺少很多东西。看一看有一些代码如何创建tableviewrows以及如何添加它们。您应该在输出控制台中看到api响应的内容,以检查api调用是否正常工作
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);
}
$.results.addEventListener('click', function onClick(event) {
var row = event.row,
videoId = row.videoId;
// TODO...
});