Ajax-08 跨域获取最新电视节目清单实例

2024-03-10 18:30

本文主要是介绍Ajax-08 跨域获取最新电视节目清单实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目标一

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

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": "0030","name": "通宵剧场六集连播","link": "http://www.jxntv.cn/live/jxtv2.shtml"},{"time": "2250","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": "20170412084110","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": "1","vurl": "http://www.iqiyi.com/v_19rrok4nt0.html","plcdown": {"17": 0,"15": 0},"vid": "e59fa071d268247291f7737c72ea37f8","timeLength": 1500,"pd": 1,"vn": "航海王 第1集","payMark": 0,"exclusive": 1,"id": 385274600,"vt": "我是路飞! 将要成为海贼王的男人","pds": "1"},{"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": "1","vurl": "http://www.iqiyi.com/v_19rrok4ms8.html","plcdown": {"17": 0,"15": 0},"vid": "c183093e2c60e7a34eb6758c3f997a1e","timeLength": 1500,"pd": 2,"vn": "航海王 第2集","payMark": 0,"exclusive": 1,"id": 385275700,"vt": "大剑客现身!海贼猎人罗罗诺亚·卓洛","pds": "2"}],"bossType": "0","aQipuId": 202861101,"qiyiProduced": 0,"allNum": 783,"pg": "1","isBossMixer": 0,"ic": 783,"pgt": 11,"aid": 202861101,"pm": 0,"pn": 75,"cid": 4},"timestamp": "20170412084110"});
}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测试开发圈”,了解更多测试教程!***

转载于:https://www.cnblogs.com/guanfuchang/p/6687668.html

这篇关于Ajax-08 跨域获取最新电视节目清单实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/795125

相关文章

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

easyui同时验证账户格式和ajax是否存在

accountName: {validator: function (value, param) {if (!/^[a-zA-Z][a-zA-Z0-9_]{3,15}$/i.test(value)) {$.fn.validatebox.defaults.rules.accountName.message = '账户名称不合法(字母开头,允许4-16字节,允许字母数字下划线)';return fal

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR