本文将介绍,如何利用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接口读取视频数据的更多相关文章

  1. PHP生成类似类似优酷、腾讯视频等其他视频链的ID

    不知道你注意了没有,类似优酷.腾讯视频等其他视频链接似乎类似这样的 http://v.youku.com/v_show/id_XNjA5MjE5OTM2.html 注意id_xxx那段,是不是看不懂了 ...

  2. 关于用jQuery知识来实现优酷首页轮播图!

    ▓▓▓▓▓▓ 大致介绍 看到了一个轮播图的思路,就想的自己动手实践一下,总体来说用jQuery实现起来简单多了 如果对代码中使用的方法有疑问,可以参考我的jQuery学习之路(持续更新),里面有讲解: ...

  3. Android-调用优酷SDK上传视频

    最近在研究用优酷的SDK来进行视频上传的功能,由于优酷的SDK只是提供了一个上传的sample code,没有涉及到授权的过程,对于新手来说,可能非常棘手,现在分享一下我的思路:   程序实现前我们先 ...

  4. 用 Java 抓取优酷、土豆等视频

    1. [代码][JavaScript]代码  import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes ...

  5. 利用Angular.js从PHP读取后台数据

    之前已经有非常多方法能够通过angular进行本地数据的读取.曾经的样例中,大多数情况都是将数据存放到模块的$scope变量中,或者直接利用ng-init定义初始化的数据. 可是这些方法都仅仅为了演示 ...

  6. JQuery mobile 实例 api

    http://www.w3school.com.cn/jquerymobile/jquerymobile_examples.asp

  7. 【API】获取优酷视频信息接口

    序:        自己的网站中需要接入一个视频模块,虚拟主机的空间小所以只能引用第三方的链接.感觉国内优酷好不错,所以查了一下优酷的接口. 0x00:        先去优酷API开放中心申请一个开 ...

  8. 经典收藏 50个jQuery Mobile开发技巧集萃

    http://www.cnblogs.com/chu888chu888/archive/2011/11/10/2244181.html 1.Backbone移动实例 这是在Safari中运行的一款Ba ...

  9. (转)经典收藏 50个jQuery Mobile开发技巧集萃

    (原)http://www.cnblogs.com/chu888chu888/archive/2011/11/10/2244181.html 经典收藏 50个jQuery Mobile开发技巧集萃   ...

随机推荐

  1. 【LOJ】#2105. 「TJOI2015」概率论

    题解 可以说是什么找规律好题了 但是要推生成函数,非常神奇-- 任何的一切都可以用\(n^2\)dp说起 我们所求即是 所有树的叶子总数/所有树的方案数 我们可以列出一个递推式,设\(g(x)\)为\ ...

  2. htm5本地存储方案——websql的封装

    一.websql 简介   在HTML5中,大大丰富了客户端本地可以存储的内容,添加了很多功能来将原本必须保存在服务器上的数据转为保存在客户端本地,从而大大提高了Web应用程序的性能,减轻了服务器端的 ...

  3. 深入理解ajax系列第九篇

    前面的话 jQuery提供了一些日常开发中需要的快捷操作,例如load.ajax.get和post等,使用jQuery开发ajax将变得极其简单.这样开发人员就可以将程序开发集中在业务和用户体验上,而 ...

  4. 关于PyCharm database查看db.sqlites文件无内容的一种可能解决方法

    初学python,学到了scrapy爬虫数据入库,在网上跟着一个视频课进行学习,但是碰到了如下问题: 这里新建了数据库文件之后,将这个.sqlite文件拖动到Database里面,然后出现了上图描述问 ...

  5. 面向对象设计原则 迪米特法则(Law of Demeter)

    迪米特法则(Law of Demeter) 又叫作最少知识原则(Least Knowledge Principle 简写LKP),英文简写为: LoD. 这是一种面向对象程序设计的指导原则,它描述了一 ...

  6. C# NPOCO 轻量级ORM框架(进阶)

    继续翻译NPOCO wiki. 这篇将home上 下面的几个页面翻译. wiki地址:https://github.com/schotime/NPoco/wiki 上一篇: http://www.cn ...

  7. [POI2015]Logistyka

    [POI2015]Logistyka 题目大意: 一个长度为\(n(n\le10^6)\)的数列\(A_i\),初始全为\(0\).操作共\(m(m\le10^6)\)次,包含以下两种: 将\(A_x ...

  8. Redis_常见JedisConnectionException异常分析

    最近项目开发中用到了Redis, 选择了官网推荐的java client Jedis.Redis常用命令学习:http://redis.io/commandsRedis官方推荐Java客户端Jedis ...

  9. 重温JavaScript获取CSS样式的方法(兼容各浏览器)

    众所周知,CSS样式有三种类型:行内样式.内部样式和外部样式,JavaScript获取CSS样式时分为两种情况:行内样式获取法 和 非行内样式获取法 . 一.行内样式获取相对简单,通过element. ...

  10. 华为S5300系列升级固件S5300SI-V100R005C01SPC100.cc

    这个固件附带了web,注意,这个插件是升级V200的必经固件,所以必须升级为此固件之后才能往下升级. 升级小插曲: 1.升级的使用使用Windows,不要用Mac或者Linux,因为从Mac/Linu ...