目标一

请求江西网络广播电视台电视节目

URL:http://www.jxntv.cn/data/jmd-jxtv2.html

分析

1.从Http头信息分析得知,器服务端未返回响应头Access-Control-Allow-xxxx 相关信息,所以只能使用JSONP方式

2.从返回值内容中分析得知,其返回值永远是:list(响应内容),即:由于服务器将函数名写死为list,所以指定callback在此程序中无效。

list({
data: [
{
"week": "周日",
"list": [
{
"time": "",
"name": "通宵剧场六集连播",
"link": "http://www.jxntv.cn/live/jxtv2.shtml"
},
{
"time": "",
"name": "都市晚剧场",
"link": "http://www.jxntv.cn/live/jxtv2.shtml"
}
]
} ]
});

实现

get_tv_list.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>跨域请求最新电视节目清单</title>
</head>
<body> <h1>跨域请求</h1>
<input type="submit" value="XmlSendRequest获取节目" onclick="XmlSendRequest();"/> <input type="submit" value="JqSendRequest-获取节目" onclick="JqSendRequest();"/> <script type="text/javascript" src="http://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script>
function XmlSendRequest() {
// 创建script标签
var tag = document.createElement('script');
// 指定src
tag.src = "http://www.jxntv.cn/data/jmd-jxtv2.html";
// 添加到head标签中
document.head.appendChild(tag);
// 删除script标签
document.head.removeChild(tag);
} function JqSendRequest() {
$.ajax({
url: "http://www.jxntv.cn/data/jmd-jxtv2.html",
type: 'GET',
dataType: 'jsonp'
})
}
function list(arg) {
console.log(arg);
} </script>
</body>
</html>

目标二

请求爱奇艺海贼王节目清单

URL:http://cache.video.iqiyi.com/jp/avlist/202861101/1/?callback=call

分析

1.从Http头信息分析得知,器服务端未返回响应头Access-Control-Allow-xxxx 相关信息,所以只能使用JSONP方式

2.从返回值内容中分析得知,当传入callback时,返回callback回调函数名,所以指定callback在此程序中有效。

try{
call({
"bmsg": {
"t": "",
"f": "kafka",
"sp": "402871101,"
},
"code": "A00000",
"data": {
"pp": 75,
"ps": "",
"pt": 783,
"vlist": [
{
"mdown": 0,
"publishTime": 1438650931000,
"vpic": "http://pic9.qiyipic.com/image/20150803/96/f9/v_109343020_m_601.jpg",
"tvQipuId": 385274600,
"purType": 0,
"qiyiProduced": 0,
"shortTitle": "航海王 第1集",
"type": "",
"vurl": "http://www.iqiyi.com/v_19rrok4nt0.html",
"plcdown": {
"": 0,
"": 0
},
"vid": "e59fa071d268247291f7737c72ea37f8",
"timeLength": 1500,
"pd": 1,
"vn": "航海王 第1集",
"payMark": 0,
"exclusive": 1,
"id": 385274600,
"vt": "我是路飞! 将要成为海贼王的男人",
"pds": ""
},
{
"mdown": 0,
"publishTime": 1438678286000,
"vpic": "http://pic8.qiyipic.com/image/20150804/5f/27/v_109343021_m_601_m2.jpg",
"tvQipuId": 385275700,
"purType": 0,
"qiyiProduced": 0,
"shortTitle": "航海王 第2集",
"type": "",
"vurl": "http://www.iqiyi.com/v_19rrok4ms8.html",
"plcdown": {
"": 0,
"": 0
},
"vid": "c183093e2c60e7a34eb6758c3f997a1e",
"timeLength": 1500,
"pd": 2,
"vn": "航海王 第2集",
"payMark": 0,
"exclusive": 1,
"id": 385275700,
"vt": "大剑客现身!海贼猎人罗罗诺亚·卓洛",
"pds": ""
}
],
"bossType": "",
"aQipuId": 202861101,
"qiyiProduced": 0,
"allNum": 783,
"pg": "",
"isBossMixer": 0,
"ic": 783,
"pgt": 11,
"aid": 202861101,
"pm": 0,
"pn": 75,
"cid": 4
},
"timestamp": ""
});
}catch(e){ };

实现

get_tv_list.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>跨域请求最新电视节目清单</title>
</head>
<body> <h1>跨域请求最新电视节目清单</h1>
<input type="submit" value="XmlSendRequest-jsonp" onclick="XmlSendRequest();"/> <input type="submit" value="JqSendRequest-jsonp" onclick="JqSendRequest();"/> <script type="text/javascript" src="http://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script>
// 客户端定义回调函数
function call(arg) {
console.log('客户端定义回调函数执行:', arg);
} function XmlSendRequest() {
// 创建script标签
var tag = document.createElement('script');
// 指定src
tag.src = "http://cache.video.iqiyi.com/jp/avlist/202861101/1/?callback=call";
// 添加到head标签中
document.head.appendChild(tag);
// 删除script标签
document.head.removeChild(tag);
} function JqSendRequest() {
$.ajax({
url: "http://cache.video.iqiyi.com/jp/avlist/202861101/1/",
type: 'GET', // POST 也会自动转换为GET请求
dataType: 'jsonp',
jsonp: "callback",
jsonpCallback: 'call', // 请求成功返回后,客户端执行call函数
success: function (data, statusText, xmlHttpRequest) {
// 未指定jsonCallback时,则自定执行方法
console.log('success 回调执行:', data);
}
// 如上请求如 http://cache.video.iqiyi.com/jp/avlist/202861101/1/?callback=call
}) }
</script>
</body>
</html>

***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***

Ajax-08 跨域获取最新电视节目清单实例的更多相关文章

  1. jQuery之ajax的跨域获取数据

    如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型.使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面.服务 ...

  2. Ajax实现跨域访问最新方式

    在实际项目当中,我们经常会遇到同一个域名下不同项目之间通过Ajax相互调用数据,这样问题就来了,如何通过Ajax实现跨域呢? 解决方案 1.Jsonp Jsonp解决跨域相对简单,服务器无需任何配置. ...

  3. AJAX远程跨域获取数据

    //本地获取json文件 $.ajax({ url : 'json.php', type : 'post', dataType : 'json',//返回json数据格式 success : func ...

  4. [ 转 ]jquery的ajax和getJson跨域获取json数据

    目前浏览器端跨域访问常用的两种方法有两种: 1.通过jQuery的ajax进行跨域,这其实是采用的jsonp的方式来实现的. jsonp是英文json with padding的缩写.它允许在服务器端 ...

  5. 再也不学AJAX了!(三)跨域获取资源 ③ - WebSocket & postMessage

    让我们先简单回顾一下之前谈到的内容,AJAX是一种无页面刷新的获取服务器资源的混合技术.而基于浏览器的"同源策略",不同"域"之间不可以发送AJAX请求.但是在 ...

  6. 再也不学AJAX了!(三)跨域获取资源 ② - JSONP & CORS

    浏览器的"同源策略"固然保障了互联网世界的数据隐私与数据安全,但是如果当我们需要使用AJAX跨域请求资源时,"同源策略"又会成为开发者的阻碍.在本文中,我们会简 ...

  7. 再也不学AJAX了!(三)跨域获取资源 ① - 同源策略

    我们之前提到过,AJAX技术使开发者能够专注于互联网中数据的传输,而不再拘泥于数据传输的载体.通过AJAX技术,我们获取数据的方式变得更加灵活,可控和优雅. 但是AJAX技术并不是一把万能钥匙,互联网 ...

  8. jquery的ajax和getJson跨域获取json数据

    目前浏览器端跨域访问常用的两种方法有两种: 1.通过jQuery的ajax进行跨域,这其实是采用的jsonp的方式来实现的. jsonp是英文json with padding的缩写.它允许在服务器端 ...

  9. 使用JSONP,jQuery的ajax跨域获取json数据

    网上找了很多资料,写的不错,推荐下: 1.深入浅出JSONP--解决ajax跨域问题 (http://www.cnblogs.com/chopper/archive/2012/03/24/240394 ...

随机推荐

  1. Storm-源码分析- spout (backtype.storm.spout)

    1. ISpout接口 ISpout作为实现spout的核心interface, spout负责feeding message, 并且track这些message. 如果需要Spout track发出 ...

  2. 2015-03-10——简析javascript对象

    对于构造函数,它是Function对象的一个实例,可以定义自己的静态成员先实例化出对象,后执行function中内部代码 静态成员:  var abc = function () {};  //既是一 ...

  3. java maven项目打包

    使用IDEA打包,首先调出来maven projects窗口: 菜单栏Help->Find Action(Ctrl+Shift+A),输入Maven projects https://blog. ...

  4. 克隆DOM元素 ele.cloneNode();

    var nodePrev = p.children[j].cloneNode(true); var nodeNext = p.children[j + 1].cloneNode(true);

  5. 5.MongoDB CRUD Operations-官方文档摘录

    总结 1. CRUD:create, read, update, and delete DOCUMENT 2.在3.2版本的插入方式 db.collection.insertOne() db.coll ...

  6. Python(进程池与协程)

    1.进程池与线程池: 为什么要用“池”:池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型 池子内什么时候装线程:并 ...

  7. Git的使用(1)

    一.Git简介 Git 是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发.Git ...

  8. python的初识

    解释型语言 和编译型语言 计算机本身不能识别高级语言,当我们运行一个程序的时候,需要一个“翻译” 来把 高级语言转换成计算机能读懂的语言. “翻译”过程分两种: 编译 编译型语言在执行程序前,首先会通 ...

  9. SQL LEFT JOIN

    SQL LEFT JOIN 关键字 SQL LEFT JOIN 关键字 LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有 ...

  10. 转:.Net 中的反射(反射特性) - Part.3

    .Net 中的反射(反射特性) - Part.3 反射特性(Attribute) 可能很多人还不了解特性,所以我们先了解一下什么是特性.想想看如果有一个消息系统,它存在这样一个方法,用来将一则短消息发 ...