Ajax — 第五天

Ajax-05

xhr(level-2)新特性

responseType属性和response属性

responseType: 表示预期服务器返回的数据的类型

  • “” ,默认空
  • text,和空一样,表示服务器返回的数据是字符串格式
  • json,表示服务器返回的是json格式
  • document,表示服务器返回的是xml格式
    <script>let xhr = new XMLHttpRequest();xhr.onreadystatechange = function () {if (this.readyState === 4 && this.status === 200) {console.log(this.response);}};xhr.responseType = 'json'; // 指定,服务器返回的数据是json类型xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks');xhr.send();</script>

response:响应

  • 用于接收服务器返回的结果
  • response可以接收任何类型的结果
  • 会根据responseType指定的值,自动处理服务器返回的结果(自动将JSON转成JS

onload事件

onloadend事件

onloadstart事件

    <script>// window.onload = function () {// }let xhr = new XMLHttpRequest();// ajax请求完毕(成功),当readyState===4的时候,会触发xhr.onload事件xhr.onload = function () {// ? 能不能在这里接收到服务器返回的结果// ? 要不要加判断,然后在接收结果console.log(this.response);};xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks');xhr.send();/*相关的其他事件:- onload          ajax请求成功之后触发- onloadstart     ajax请求之前触发- onloadend       ajax请求完成之后触发(无论成功或失败都会触发)*/</script>

jQuery其他方法

$.ajax()其他选项

$.ajax({type: 'GET',url: 'xxxxx',data: {},success: function (res) {},contentType: false, // 默认值  application/x-www-form-urlencodedprocessData: false,/*下面的选项大家知道,了解即可*/timeout: 10, // 设置请求超时事件ontimeout: function () {}, // 请求超时之后的处理函数beforeSend: function () {}, // 发送请求之前触发的函数complete: function () {}, // 表示请求响应结束之后触发的函数(无论成功失败)dataType: 'json', // 预期服务器返回数据的类型,相当于responseTypeheaders: {}, // 用于设置请求头xhr: function () {let xhr = new XMLH........return xhr; // 必须return  xhr对象}, // 允许我们自定义xhr对象来完成一些jQuery做不到的事
});

$.ajaxSetup();

全局配置ajax选项:

$.ajaxSetup({// 对象里面的内容,和$.ajax里面的对象的内容格式一样timeout: 100, // 全局配置请求超时时间为100毫秒type: 'POST', // 全局配置请求方式为POST
});

$(document).ajaxStart();

  • ajax请求开始,触发的事件

$(document).ajaxStop();

  • ajax请求终止后触发的事件

例如:NProgress.start() 和 NProgress.done() 的作用相同
在这里插入图片描述

$.ajaxPrefilter();

在每个ajax请求发送之前,自定义ajax的选项或修改ajax的选项

$.ajaxPrefilter(function (options) {// options是当前ajax请求的所有选项// 得到ajax请求的所有选项之后,可以对他进行修改
});

axios简介

  • 它是别人封装的一个能够实现ajax请求的库。

  • 体积小,文件大小官方说6kb。

  • 专门用于处理ajax请求,比jQuery还要强大,没有其他功能

// 有没有类似  $.get的方法
axios.get('http://www.liulongbin.top:3006/api/getbooks').then(function (res) {console.log(res);});

https://github.com/axios/axios

跨域(理解)

同源策略

  • 同源指的是,两个url的 协议、域名、端口都相同,那么这两个url就是同源的
  • 如果两个url的 协议、域名、端口只要要一个不一样,叫做非同源
  • 如果非同源,以下三种行为会受到限制
    • DOM无法操作
    • cookie无法获取 (了解)
    • Ajax请求无效

两个url,指的是打开页面的url,和ajax请求的地址

跨域Ajax请求

打开页面的url 和 接口地址的url 如果非同源,就是跨域请求。

我们之前练习的所有案例,都是跨域请求,之所以能够成功,是因为 liulongbin 老师的接口做了处理。

如何实现跨域请求:

  • JSONP
    • 出现的比较早,浏览器都支持。
  • CORS
    • 出现的完,但是是w3c的标准,是标准的解决ajax跨域问题的方法。

JSONP方案实现跨域请求

原生代码实现JSONP:

  • 前端(准备一个函数,比如叫做abc。并且设置好形参,准备接收结果)
  • 前端(使用script标签src属性,去请求jsonp接口,必须指定callback参数,值就是abc)

细节问题:

  • 请求,可以通过network查看,但是注意它不是ajax请求
  • 通过network查看到,服务器返回一个字符串,这个字符串会被浏览器当做js代码解释
  • 正规的JSONP接口,都必须传递callback参数,值是我们准备好的函数名。

jQuery方法实现JSONP

// 方法一:
$.getJSON('url?callback=?', data, callback);// 方法二:
$.ajax({url: '',data: {},success: function (res) {},dataType: 'jsonp' // 必须指定的一项
});

淘宝搜索建议案例

接口

淘宝搜索建议接口:'https://suggest.taobao.com/sug

请求参数: q – 我们输入的值

步骤:

  • 注册输入框的键盘弹起事件
  • 判断输入框的值是否为空
  • 使用JSONP请求接口,获取搜索建议
  • 将搜索建议渲染到页面中(需要自定义ul和css样式)
#sousuo, #sousuo li {list-style: none;padding: 0;margin: 0;
}
#sousuo li {height: 25px;line-height: 25px;padding-left: 5px;color: gray;
}
<!-- 下面的ul放到搜索区的后面 -->
<!-- 搜索建议区 -->
<ul id="sousuo"></ul>
// 注册输入框的keyup事件,当键盘弹起的时候,完成搜索
$('.ipt').keyup(function () {// 判断输入框的值是否为空let val = $(this).val().trim();if (val === '') {// 清空搜索建议列表$('#sousuo').empty();return;}// 发送JSONP请求,获取搜索建议$.ajax({url: 'https://suggest.taobao.com/sug',data: {q: val},success: function (res) {// console.log(res);let str = '';res.result.forEach(item => {str += '<li>' + item[0] + '</li>';});// 把拼接好的li,放到ul中$('#sousuo').html(str);},dataType: 'jsonp' // 必须指定的});
});

CORS方案实现跨域请求

CORS翻译过来,跨域资源共享。
在这里插入图片描述

CORS实现跨域,和前端没有关系。前端还是正常的写代码,完成ajax请求即可。

CORS响应头:https://developer.mozilla.org/zh-CN/docs/Glossary/CORS

CORS介绍:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

防抖和节流(掌握)

防抖

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

节流

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Swift傻傻分不清楚系列(十)枚举

本页内容包含&#xff1a; 枚举语法&#xff08;Enumeration Syntax&#xff09;使用 Switch 语句匹配枚举值&#xff08;Matching Enumeration Values with a Switch Statement&#xff09;关联值&#xff08;Associated Values&#xff09;原始值&#xff08;Raw Values&…

数据库系统原理(第四章:SQL与关系数据库基本操作 )

一、SQL概述 sql是结构化查询语言&#xff08;Structured Query Language&#xff0c;SQL&#xff09;是专门用来与数 据库通信的语言&#xff0c;它可以帮助用户操作关系数据库。 SQL的特点&#xff1a; SQL不是某个特定数据库供应商专有的语言&#xff1b; SQL简单易学 &…

selenium操作浏览器窗口最大化和刷新

实际测试过程中经常遇到打开一个页面并不是全屏显示&#xff0c;但是却希望它能够全屏显示或者新增一条记录后需要刷新一下看能不能再列表中正常显示。 于是就有了今天的关于对浏览器窗口的最大化和刷新页面。需要说明的一点&#xff1a;所有和python相关的记录都是基于3.6版本…

Git安装步骤+Mac终端配置

Git安装步骤 其实可以直接略过。因为安装的时候&#xff0c;一路 next 即可。 注意&#xff0c;安装路径中不能出现中文。安装完成后&#xff0c;不得更改安装路径。 检查Git是否安装成功 在任何文件夹&#xff0c;空白处&#xff0c;右键。如果看到 “Git Bash Here”&#xf…

数据库系统原理(第5章:数据库编程)

一、存储过程 概念&#xff1a;存储过程是一组为了完成某项特定功能的SQL语句集&#xff0c; 其实质就是一段存储在数据库中的代码。 它可以由声明式的sql语句和过程式sql语句组成。 特点&#xff1a; 可增强SQL语言的功能和灵活性良好的封装性高性能可减少网络流量可作为一种安…

科学-中医:儒医

ylbtech-科学-中医&#xff1a;儒医"儒医"是一种历史悠久的社会文化现象。阐释了"儒医"的三重境界,即良医、大医、圣医。"良医"注重技,属于知识论,追求的是"真";"大医"注重德,属于道德论,追求的是"善";"圣医…

Ajax — 第六天

Ajax-06 GET和POST的区别 字面意思不同 GET 是获取意思。想从服务器获取数据&#xff0c;用GET方式的请求POST是邮递、邮寄意思。如果提交数据到服务器&#xff0c;用POST方式 请求参数位置不同 GET 请求参数会和url拼接到一起&#xff0c;形如 api/getbooks?id2&age3PO…

iOS Tips 模拟器屏幕截图

当我们发布app到AppStore的时候&#xff0c;在itunes connect里面&#xff0c;苹果官方要求我们提供各种尺寸的屏幕截图。由于受到硬件条件的限制&#xff0c;我们不可能在每个真实的物理机器上测试并截图&#xff0c;相反如果我们能直接在模拟器上进行屏幕截图的话&#xff0c…

数据库系统原理(第6章:数据库安全与保护)

一、数据库完整性 数据库完整性是指数据库中数据的正确性和相容性。 完整性约束条件的作用对象 列级约束&#xff1a; 包括对列的类型、取值范围、精度等的约束元组约束&#xff1a; 指元组中各个字段之间的相互约束表级约束&#xff1a; 指若干元组、关系之间的联系的约束定义…

.net core WebApi 使用Swagger生成API文档

关于 Swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一&#xff0c;有以下几个原因&#xff1a; Swagger 可以生成一个具有互动性的API控制台&#xff0c;开发者可以用来快速学习和尝试API。Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现。Swagger 文件可…

Git — 初体验

准备工作 版本管理软件 作用 记录代码的版本实现多人协作 分类 集中式&#xff0c;典型代表 SVN分布式&#xff0c;典型代表 Git 注册远程仓库账号 远程仓库相当于中央服务器我们需要在github上或码云上注册一个账号&#xff0c;用于创建远程仓库使用注册的时候&#xff0…

iOS CoreTelephony框架介绍与使用案列

昨晚看一篇文章时看到了私有API这个词&#xff0c;貌似开发者对私有API的使用很反感于是果断百度谷歌&#xff0c;以下是Stackoverflow中关于Private Frameworks的一个解释&#xff1a; Private frameworks are frameworks which you are not allowed to use. They are not exp…

JS数组的迭代器方法

迭代器forEachevery一、迭代器方法 迭代器方法&#xff0c; 这些方法对数组中的每一个元素应用一个函数&#xff0c;可以返回一个值&#xff0c;一组值或一个新数组。 不生成新数组的迭代器方法 1.forEach() forEach()输出 forEach输出结果2.every() 该方法按接受一个返回值为布…

Git 笔记

三个区域 下面三个区域&#xff0c;是Git虚拟的区域&#xff0c;看不到&#xff0c;摸不着。 工作区 工作区&#xff0c;指的是使用Git管理后的文件&#xff0c;这些文件显示在磁盘上&#xff0c;供我们使用或修改的区域。所以&#xff0c;粗略的说&#xff0c;项目文件夹就是…

git -- 练习的笔记

gitgitee.com:my_exercises/my_exercises.githttps://gitee.com/my_exercises/my_exercises/invite_link?invite3ab56c724a0aed34ae2bd193ce87e741e67fe05ee029cc01b7993663152babc57d76203fdafbbb42e766b0d826817bc91.在任意位置右键打开 2.初始化设置 3.添加远程仓库地址 4.…

Swift傻傻分不清楚系列(十二) 属性

本页包含内容&#xff1a; 存储属性&#xff08;Stored Properties&#xff09;计算属性&#xff08;Computed Properties&#xff09;属性观察器&#xff08;Property Observers&#xff09;全局变量和局部变量&#xff08;Global and Local Variables&#xff09;类型属性&a…

GIT — 使用回顾

回顾Git的使用 记录每次的变更 工作区 --> 暂存区 git add . / git add 文件 文件夹 .... 工作区 --> 暂存区/本地仓库 前提条件&#xff1a;文件曾经被添加到暂存区或提交到仓库git commit -a -m 提交说明 暂存区 --> 本地仓库 git commit -m 提交说明 / git commi…

Ajax — 大事件项目(第一天)

应用的前端技术 Ajax (重要) — jQuery方式接口请求Layui 框架使用HTML CSS JS 项目说明和演示 线上 DEMO 项目地址&#xff1a;http://www.liulongbin.top:8086/项目的 API 接口地址&#xff1a; https://www.showdoc.cc/escook?page_id3707158761215217 项目请求根路径…

iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

说明&#xff1a; 1&#xff09;该文简短介绍在iOS开发中遍历字典、数组和集合的几种常见方式。 2&#xff09;该文对应的代码可以在下面的地址获得&#xff1a;https://github.com/HanGangAndHanMeimei/Code 一、使用for循环 要遍历字典、数组或者是集合&#xff0c;for循环是…

Ajax — 大事件项目(第二天)

大事件-02 fix一个bug 原因&#xff1a; 开始做注册的时候&#xff0c;页面中只有一个 namepassword的input&#xff0c;所以 $(‘input[name“password”]’) 可以准确的找到元素后来做登录的时候&#xff0c;页面中多了一个namepassword的input&#xff0c;所以$(‘input[…