XHR

Rails Guide--Working with JavaScript in Rails; 如何把jquery转化为原生js

痞子三分冷 提交于 2020-05-05 01:08:18
1 An Introduction to Ajax 打开网页的的过程也叫:request response cycel。 JavaScript也可以request然后parse the response,还可以更新网页上的信息。 因此JS可以部分更新网页。这个技术称为Ajax. Rails默认使用CoffeeScript。包括应用JS.例子: $.ajax(url: "/test").done (html) -> $("#results").append html 这段代表从url上取数据,然后附加到一个id为results的div后面。 Rails 提供了内建支持来使用这个技术开发网页。无需你自己写这样的代码。有helper方法。 基本原理就是这样。 2 Unobtrusive JavaScript 不冒失的JS Rails使用这个技术来把JS附加到DOM上去。unobtrusive意味着不把JS代表混入到HTML。 而是用data-*属性来传递参数给behavior。 3 Built-in Helpers 3.1 Remote elements Rails提供了一组视图帮助方法,是用Ruby写的,用于帮你生成HTML元素。有时,你要增加Ajax到那些元素中。 因为Unobtrusive JS, the Rails "Ajax helper"其实一半是Ruby一半是JS。

Python爬虫---爬取抖音短视频

自作多情 提交于 2020-05-04 10:45:40
目录 前言 抖音爬虫制作 选定网页 分析网页 提取id构造网址 拼接数据包链接 获取视频地址 下载视频 全部代码 实现结果 待解决的问题 前言 最近一直想要写一个抖音爬虫来批量下载抖音的短视频,但是经过几天的摸索我发现了一个很严重的问题......抖音实在是难爬!从一开始的网页分析中就有着很多的坑,但是这几天的摸索也不是一无所获,我鼓捣出来了一个问题版的抖音爬虫(操作较为复杂),所以我也想通过这篇博客来记录下我分析网页的过程,也想请教一下路过大佬们,欢迎各位大佬指出问题! 抖音爬虫制作 选定网页 想要爬取抖音上面的视频,就要先找到可以刷小视频的地址,于是我就开始在网上寻找网页版的抖音。经过一番寻找,发现抖音根本就没有网页版的这个板块,打开的网页大多都是如下图所示提示你下载app的网页: 想要爬取小视频的内容,没有网页地址可不行。于是我又想到了另一种寻找网页的方法: 首先我打开了手机抖音,选定了一个喜欢的抖音号,使用复制链接的方法来尝试是否可以在网页中打开: 将链接粘贴到记事本中,发现它是长这个样子的 https://v.douyin.com/wGf4e1/ 将这个网址在浏览器中打开,发现这个网址可以正常显示 向下滑动,也可以看到这个账号发布的视频 ok,到现在为止,我已经选定了将这个页面作为我获取数据的起始页面 选定起始页之后,我的下一步想法是要去获取这些小视频的单独的网页地址

【Python3爬虫】微博用户爬虫

女生的网名这么多〃 提交于 2020-05-04 07:46:53
此次爬虫要实现的是爬取某个微博用户的关注和粉丝的用户公开基本信息,包括用户昵称、id、性别、所在地和其粉丝数量,然后将爬取下来的数据保存在MongoDB数据库中,最后再生成几个图表来简单分析一下我们得到的数据。 一、具体步骤: 这里我们选取的爬取站点是 https://m.weibo.cn ,此站点是微博移动端的站点,我们可以直接查看某个用户的微博,比如 https://m.weibo.cn/profile/5720474518 。 然后查看其关注的用户,打开开发者工具,切换到XHR过滤器,一直下拉列表,就会看到有很多的Ajax请求。这些请求的类型是Get类型,返回结果是Json格式,展开之后就能看到有很多用户的信息。 这些请求有两个参数,containerid和page,通过改变page的数值,我们就能得到更多的请求了。获取其粉丝的用户信息的步骤是一样的,除了请求的链接不同之外,参数也不同,修改一下就可以了。 由于这些请求返回的结果里只有用户的名称和id等信息,并没有包含用户的性别等基本资料,所以我们点进某个人的微博,然后查看其基本资料,比如 这个 ,打开开发者工具,可以找到下面这个请求: 由于这个人的id是6857214856,因此我们可以发现当我们得到一个人的id的时候,就可以构造获取基本资料的链接和参数了,相关代码如下(uid就是用户的id): 1 uid_str = "

第三篇,ajax 和 axios、fetch的区别

我只是一个虾纸丫 提交于 2020-05-04 02:49:06
1.jQuery ajax $.ajax({ type: 'POST', url: url, data: data, dataType: dataType, success: function () {}, error: function () {} }); 传统Ajax指的是XMLHttpRequest简称(XHR),最早出现的发送后端请求技术,隶属于原生js中,核心使用XMLHttpRequest对象,多个请求之间如果有先后关系的话,就会出现回调地狱。 jQuery ajax是对原生XHR的封装,除此以外还添加了对JSONP的支付。经过多年的更新维护,真的已经是非常方便了,优点无需多言;如果是硬要举出几个缺点,那可能只有: 本身是针对MVC的编程,不符合现在的MVVM的浪潮。 基于原生的XHR开发,XHR本身的架构不清晰。 jQuery整个项目太大,单纯使用ajax却要引入整个jQuery非常不合理(采取个性化打包的方案又不能享受CDN服务) 不符合关注分类 (Separation of Concerns) 的原则 配置和调用的方法非常混乱,而且基于事件的异步模型不太友好。 PS:MVVM(Model-View-ViewModel), 源自于经典的 Model–View–Controller(MVC)模式。MVVM 的出现促进了 GUI 前端开发与后端业务逻辑的分离

$.ajax,axios,fetch三种ajax请求的区别

╄→尐↘猪︶ㄣ 提交于 2020-05-04 00:08:34
Ajax是常用的一门与Web服务器通信的技术,目前发送Ajax请求的主要有4种方式: 原生XHR jquery中的$.ajax() axios fetch 至于原生的XHR目前工作中已经很少去手写它了,前些年我们比较常用的是jquery的ajax请求,但是近些年前端发展很快,jquery包装的ajax已经失去了往日的光辉,取而代之的是新出现的axios和fetch,两者都开始抢占“请求”这个前端重要领域。本文结合自己的使用经历总结一下它们之间的一些区别,并给出一些自己的理解。 1.Jquery ajax 代码示例: $.ajax({ type:"GET", url:url, data:data, dataType:dataType success:function(){}, error:function(){} }) 以上代码很简单,我就不多解释了,这就是jquery对原生XHR的封装,另外还增加了jsonp的支持,让ajax请求可以支持跨域请求,但是要注意的是:jsonp请求本质不是XHR异步请求,就是请求了一个js文件,因此在浏览器的network面板中的xhr标签下看不到jsonp的跨域请求,但是在js标签下能看见。 jsonp请求示例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title

将已经存在的异步请求callback转换为同步promise

≯℡__Kan透↙ 提交于 2020-05-03 21:19:18
由于js是单线程执行,为防止阻塞,会有很多异步回调函数callback,嵌套层次多了,可读性就差了很多。随着社区的发展,出现了promise。我们来将一些常见的回调函数做修改,变成promise的链式调用,简洁,清晰明了。 先理解一点点概念。 每个promise都有三个状态。pending、Fulfilled、Rejected。最初为pending,状态一但改变为Fulfilled、Rejected中的一种,即成永远,不再改变。 pending : 等待状态。 Fulfilled : 表示成功完成。 Rejected : 表示被拒绝,失败。 原生的ajax请求 /** * 原生请求 */ function nativeRequest(url) { var xhr = new XMLHttpRequest() // 这里我建议的书写顺序是: onreadystatechange -> open -> send // 这样,onreadystatechange 可以获取 readyState 的状态 1 2 3 4 xhr.onreadystatechange = function () { if (xhr.readyState === 4) { // 请求已完成,且响应已就绪 if (xhr.status === 200) { // TODO: 处理返回正常的数据 xhr

荒凉这是中科院院士冯端

…衆ロ難τιáo~ 提交于 2020-05-03 18:33:21
sdfsdf 服务网格作为一个改善服务到服务通信的专用基础设施层,是云原生范畴中最热门的话题。随着容器愈加流行,服务拓扑也频繁变动,这就需要更好的网络性能。服务网格能够通过服务发现、路由、负载均衡、心跳检测和支持可观测性,帮助我们管理网络流量。服务网格试图为无规则的复杂的容器问题提供规范化的解决方案 将供应链搬出中国,似乎成了过去两三个月新冠肺炎疫情衍生出的热门话题。 年初新冠肺炎疫情爆发,让中国供应链的生产活动几乎完全停顿,影响席卷全球:苹果的新 5G 有可能因疫情而延期推出,特斯拉新款芯片无法及时交付、陷入“芯片门”纠纷。其余像三星、小米、索尼等著名跨国企业,均受到供应链停摆的影响。 因此,ixijain.answers.yahoo.com/question/index?qid=20200427220740AAqE94m?CN7=87gml=66s malaysia.answers.yahoo.com/question/index?qid=20200427220740AAqE94m?MJ4=56ghr=68q sg.answers.yahoo.com/question/index?qid=20200427220740AAqE94m?BK3=80zmm=79o hk.answers.yahoo.com/question/index?qid

原生JavaScript手写Ajax

十年热恋 提交于 2020-05-03 18:32:45
1 <script> 2 // 封装通用的xhr对象,兼容各个版本 3 function creatXHR() { 4 // 判断浏览器是否将XMLHttpRequest作为本地对象实现,针对IE7,firefox, opera等 5 if ( typeof XMLHttpRequest != "undefined" ) { 6 return new XMLHttpRequest(); 7 } 8 else if ( typeof ActiveXObject != "undefined" ) { 9 // 将所有可能出现的ActiveXObject版本放在一个数组中 10 var xhrArr = [ 11 'Microsoft.XMLHTTP' , 12 'MSXML2.XMLHTTP.6.0' , 13 'MSXML2.XMLHTTP.5.0' , 14 'MSXML2.XMLHTTP.4.0' , 15 'MSXML2.XMLHTTP.3.0' , 16 'MSXML2.XMLHTTP.2.0' 17 ]; 18 // 遍历创建XMLHttpRequest对象 19 var xhr; 20 for (let i = 0; i < array.length; i++ ) { 21 try { 22 // 创建XMLHrrpRequest对象 23 xhr = new

echarts之简单的入门——【一】做个带时间轴的柱状统计图

杀马特。学长 韩版系。学妹 提交于 2020-05-03 17:34:54
百度Echarts   官网首页 http://echarts.baidu.com/   配置项手册 http://echarts.baidu.com/option.html#title   GL配置项手册 http://echarts.baidu.com/option-gl.html#globe   EchartsAPI手册 http://echarts.baidu.com/api.html#echarts   官方实例 http://echarts.baidu.com/examples/   五分钟上手echarts    http://echarts.baidu.com/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20ECharts 选择实例   我一般直接从官方实例中选择相符自己需要的直接改动,毕竟不是前端,好吧,主要是自己懒~   不是说做柱状图,一定要从柱状图中选择的,可以从任意实例中选择基本符合自己的然后修改即可    修改实例 时间轴 dataZoom: [{ startValue: '2014-06-01' }, { type: 'inside' }], 改为柱状图   修改type类型然后运行即可看到对应效果 series: { name: 'Beijing AQI' , type: 'line'

javaScript基础

家住魔仙堡 提交于 2020-05-03 15:07:05
1.继承 1、原型链继承,将父类的实例作为子类的原型,他的特点是实例是子类的实例也是父类的实例,父类新增的原型方法/属性,子类都能够访问,并且原型链继承简单易于实现,缺点是来自原型对象的所有属性被所有实例共享,无法实现多继承,无法向父类构造函数传参。 2、构造继承,使用父类的构造函数来增强子类实例,即复制父类的实例属性给子类,构造继承可以向父类传递参数,可以实现多继承,通过call多个父类对象。但是构造继承只能继承父类的实例属性和方法,不能继承原型属性和方法,无法实现函数服用,每个子类都有父类实例函数的副本,影响性能 3、实例继承,为父类实例添加新特性,作为子类实例返回,实例继承的特点是不限制调用方法,不管是new 子类()还是子类()返回的对象具有相同的效果,缺点是实例是父类的实例,不是子类的实例,不支持多继承 4、拷贝继承:特点:支持多继承,缺点:效率较低,内存占用高(因为要拷贝父类的属性)无法获取父类不可枚举的方法(不可枚举方法,不能使用for in 访问到) 5、组合继承:通过调用父类构造,继承父类的属性并保留传参的优点,然后通过将父类实例作为子类原型,实现函数复用 6、寄生组合继承:通过寄生方式,砍掉父类的实例属性,这样,在调用两次父类的构造的时候,就不会初始化两次实例方法/属性,避免的组合继承的缺点 2.this指向 (1).this 指向有哪几种 1.默认绑定