Jquery Mobile实例--利用优酷JSON接口读取视频数据
本文将介绍,如何利用JqueryMobile调用优酷API JSON接口显示视频数据。
(1)注册用户接口。
首页,到 http://open.youku.com 注册一个账户,并通过验证。然后找到API接口 (http://open.youku.com/docs/tech_doc.html)
可以看到优酷提供不少API,本文将演示“通过视频关键词”接口。

点击进去后,会发现client_id和keyword是必填的,因此,未来构造的URL应该类似
https://openapi.youku.com/v2/searches/video/by_keyword.json?client_id=eab6c5f589febec2&keyword=net
如果你的keyword是中文,必须使用encodeURI进行编码。

(2)引用Jquery Mobile
你可以到 http://www.jquerymobile.com/ 下载最新版的JM库,不过本文以JM4.0为例。在本文的源代码后面,你可以看到这些CSS和JS。

(3)构建页面
构建页面的第一步,是在pageinit里,读取数据
$(document).on('pageinit', '#home', function () {
var url = 'https://openapi.youku.com/v2/searches/video/by_keyword.json?',
mode = '&keyword=' + encodeURI('net'),
key = '&client_id=eab6c5f589febec2';
$.ajax({
url: url + mode + key,
dataType: "json",
async: true,
success: function (result) {
ajax.parseJSONP(result);
},
error: function (request, error) {
alert('无法连接网络或者返回值错误!');
}
});
});
接下来,在返回值里,处理数据,显示到listview列表里。
var ajax = {
parseJSONP: function (result) {
movieInfo.result = result.videos;
$.each(result.videos, function (i, row) {
console.log(JSON.stringify(row));
$('#movie-list').append('<li><a href="" data-id="' + row.id + '"><img src="' + row.thumbnail + '"/><h3>' + row.title + '</h3><p>click:' + row.view_count + '</p></a></li>');
});
$('#movie-list').listview('refresh');
}
}
这里使用了ID为moview-list的元素作为容器,你可以在HTML里找到它
<ul data-role="listview" id="movie-list" data-theme="a"> </ul>
另外,代码中 movieInfo.result = result.videos;中的videos是优酷接口返回的视频列表。
代码中的row.thumbnail 是Video提供的属性,这里是缩列图。
(4)处理单击事件
当视频一条条显示出来后,在vclick事件里,更新页面。请注意,如果使用href会发现失败,因为JM默认对会href的请求,转好为AJAX请求。
$(document).on('vclick', '#movie-list li a', function () {
movieInfo.id = $(this).attr('data-id');
$.mobile.changePage("#headline", { transition: "slide", changeHash: false });
});
(5)显示视频
$(document).on('pagebeforeshow', '#headline', function () {
$('#movie-data').empty();
$.each(movieInfo.result, function (i, row) {
if (row.id == movieInfo.id) {
$('#movie-data').append('<li><a href='+row.link+'><img src="' + row.thumbnail + '"></a></li>');
$('#movie-data').append('<li>名称: <a href=' + row.link + '>' + row.title + '</a></li>');
$('#movie-data').append('<li>发布日期:' + row.published + '</li>');
$('#movie-data').append('<li>时长:' + row.duration + '</li>');
$('#movie-data').append('<li>查看次数:' + row.view_count + '</li>');
$('#movie-data').listview('refresh');
}
});
});
最后,处理视频显示即可。在上面代码里,需要注意一定要调用listview的refresh方法刷新listview。
(6)运行结果
现在运行系统,界面如下,单击视频,可以查看具体的视频列表。


(7)后续步骤
本文简单的介绍了如何利用Jquery Mobile从后台调用数据并进行显示。如果作为一个真正的应用还有很多事情要做,例如使用localstorage缓存,数据分页等。
然后,就可以利用第三方工具如phonegap把HTML转化为适合Android/iOS的app了。
(8)源代码
单击此处下载本文源代码
http://files.cnblogs.com/mqingqing123/JMDemo.rar
Jquery Mobile实例--利用优酷JSON接口读取视频数据的更多相关文章
- PHP生成类似类似优酷、腾讯视频等其他视频链的ID
不知道你注意了没有,类似优酷.腾讯视频等其他视频链接似乎类似这样的 http://v.youku.com/v_show/id_XNjA5MjE5OTM2.html 注意id_xxx那段,是不是看不懂了 ...
- 关于用jQuery知识来实现优酷首页轮播图!
▓▓▓▓▓▓ 大致介绍 看到了一个轮播图的思路,就想的自己动手实践一下,总体来说用jQuery实现起来简单多了 如果对代码中使用的方法有疑问,可以参考我的jQuery学习之路(持续更新),里面有讲解: ...
- Android-调用优酷SDK上传视频
最近在研究用优酷的SDK来进行视频上传的功能,由于优酷的SDK只是提供了一个上传的sample code,没有涉及到授权的过程,对于新手来说,可能非常棘手,现在分享一下我的思路: 程序实现前我们先 ...
- 用 Java 抓取优酷、土豆等视频
1. [代码][JavaScript]代码 import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes ...
- 利用Angular.js从PHP读取后台数据
之前已经有非常多方法能够通过angular进行本地数据的读取.曾经的样例中,大多数情况都是将数据存放到模块的$scope变量中,或者直接利用ng-init定义初始化的数据. 可是这些方法都仅仅为了演示 ...
- JQuery mobile 实例 api
http://www.w3school.com.cn/jquerymobile/jquerymobile_examples.asp
- 【API】获取优酷视频信息接口
序: 自己的网站中需要接入一个视频模块,虚拟主机的空间小所以只能引用第三方的链接.感觉国内优酷好不错,所以查了一下优酷的接口. 0x00: 先去优酷API开放中心申请一个开 ...
- 经典收藏 50个jQuery Mobile开发技巧集萃
http://www.cnblogs.com/chu888chu888/archive/2011/11/10/2244181.html 1.Backbone移动实例 这是在Safari中运行的一款Ba ...
- (转)经典收藏 50个jQuery Mobile开发技巧集萃
(原)http://www.cnblogs.com/chu888chu888/archive/2011/11/10/2244181.html 经典收藏 50个jQuery Mobile开发技巧集萃 ...
随机推荐
- 2018 ACM-ICPC, Syrian Collegiate Programming Contest F - Pretests SOS dp
#include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk mak ...
- LeetCode 80. 删除排序数组中的重复项 II
LeetCode 80. 删除排序数组中的重复项 II
- GenericServlet与HttpServlet
1.HttpServlet 1). 是一个 Servlet, 继承自 GenericServlet. 针对于 HTTP 协议所定制. 2). 在 service() 方法中直接把 ServletReu ...
- vue 组件使用中的细节点
1.is属性 有些 HTML 元素,诸如 <ul>.<ol>.<table> 和 <select>,对于哪些元素可以出现在其内部是有严格限制的.而有些元 ...
- [leetcode tree]101. Symmetric Tree
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...
- iOS Sprite Kit教程之使用帮助文档以及调试程序
iOS Sprite Kit教程之使用帮助文档以及调试程序 IOS中使用帮助文档 在编写代码的时候,可能会遇到很多的方法.如果开发者对这些方法的功能,以及参数不是很了解,就可以使用帮助文档.那么帮助文 ...
- 你了解border-radius吗?
1.圆角正方形 .rounded-square{ width: 200px; height: 200px; background-color: pink; border-radius: 50px; } ...
- luoguP4715 [英语]Z语言 平衡树+hash
显然只能有$hash$来做.... 我们需要一个东西来维护$\sum i * seed^{rank[i]}$ 很自然地联想到平衡树 如果以序列下标建立一棵平衡树,那么无法处理 因此,可以以权值为下标建 ...
- [BZOJ3507][CQOI2014]通配符匹配(DP+Hash)
显然f[i][j]表示S匹配到第i个通配符,T匹配到第j个字符,是否可行. 一次一起转移两个通配符之间的所有字符,Hash判断. 稍微有点细节.常数极大卡时过排名倒数,可能是没自然溢出的原因. #in ...
- JZYZOJ 2002 [cf] 石江豪pk李震 博弈论 sg函数
http://172.20.6.3/Problem_Show.asp?id=2002 https://blog.csdn.net/qq_24451605/article/details/5015497 ...