Ajax — 第六天

Ajax-06

GET和POST的区别

  • 字面意思不同
    • GET 是获取意思。想从服务器获取数据,用GET方式的请求
    • POST是邮递、邮寄意思。如果提交数据到服务器,用POST方式
  • 请求参数位置不同
    • GET 请求参数会和url拼接到一起,形如 api/getbooks?id=2&age=3
    • POST 的请求参数,也叫做提交的数据,它不会和url拼接到一起
  • 浏览器工具查看请求参数的位置不一样
    • GET请求,会在url上查看到请求参数;在Headers/Query String Parameters也可以查看。
    • POST方式,只能在Headers/Form Data位置查看提交的数据
  • 携带的数据量大小不一样
    • GET方式能够携带少量的数据,一般浏览器允许的url的长度是2k
    • POST方式能够携带的数据量大小没有限制。
  • 上传文件
    • 上传文件只能使用POST方式。
  • 本质的区别
    • GET方式不会对服务器的数据做出改变
    • POST方式非常可能对服务器的数据做出改变

如果后端同学提供的接口没有使用正确的请求方式,我们前端也没有办法。

同步和异步

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML)。

和异步相对的是同步。

说起JS中的同步和异步,需先了解 JS 的单线程。

JS单线程

JS的单线程,指的是执行代码的时候,只能从前向后(从上到下),一个一个任务去执行。前面的任务没有执行完,后面的任务只能等待。

// 写一个函数,函数的执行需要大量的时间
// 1 1 2 3 5 8 13 21 ....  斐波那契数列
// 要求给出一个位置,计算得出该位置的数字是什么?
function fn (n) {if (n === 1 || n == 2) {return 1;}return fn(n-1) + fn(n-2);
}console.log(111);
console.log(  fn(43)  );
console.log(222);
console.log(222);
console.log(222);
console.log(222);
console.log(222);

同步

同步,即同步任务,指的就是JS代码需从上到下依次执行,前面的代码如果没有执行完毕,后面代码的执行只能等待。

特点:阻塞后续代码的执行

异步

异步,即异步任务。异步任务的执行比较复杂。比如一段代码,包含同步和异步任务,具体来说

  1. 优先执行同步任务
  2. 遇到异步任务,会把异步任务放到队列中,简单的理解就是排队等待
  3. 同步任务执行完毕,会按顺序执行队列中的异步任务
  4. 多个异步任务之间,可以同时执行。
  5. 哪一个异步任务先结束,则优先处理该异步任务的结果。

[
在这里插入图片描述

JS中的异步任务列举

  • 定时器
  • 事件
  • Ajax请求
  • 异步读写文件(Node中的知识点)
  • 查询MySQL数据库(Node中的知识点)

初次之外都是同步代码

Ajax中的异步

Asynchronous – 异步。

console.log(111);let xhr = new XMLHttpRequest();
xhr.onload = function () {console.log(333);
};
// xhr.responseType = 'json'; // 同步请求不能设置responseType
// open(请求方式, url, true)
// 第三个可选参数,默认 true,表示ajax请求是异步请求
// 如果希望发送一个同步的ajax请求,第三个参数设置为false
xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks', false);
xhr.send();console.log(222);

虽然可以通过open方法的第三个参数,来设置ajax为同步任务,但是强烈不建议这么做

jQuery中,能不能设置ajax的同步或异步:

$.ajax({type: 'GET',url: 'xxx',async: true, // 默认true表示异步。如果设置为false,则表示同步
});

小练习:体会一下异步任务的执行:

console.log(111);// 异步ajax请求,请求书籍数据 ---------------------------------
let xhr = new XMLHttpRequest();
xhr.onload = function () {console.log(333);
};
xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks');
xhr.send();// 再次发生一个ajax请求 ------------------------------------
let xhr2 = new XMLHttpRequest();
xhr2.onload = function () {console.log(444);
};
xhr2.open('GET', 'http://www.liulongbin.top:3006/api/delbook?id=1');
xhr2.send();console.log(222);

HTTP协议(了解)

HTTP协议简介

  • 什么是http协议
    • 超文本传输协议
  • http协议规定了什么
    • 规定了客户端和服务器交互数据的时候,数据要遵守的格式。

http请求消息/请求报文

请求报文,指的是客户端提交给服务器的全部数据。

  • 请求行
    • 请求方式
    • 请求url地址
    • 协议及版本
  • 请求头
    • 键:值 的形式,一次请求,可能会有很多请求头
    • Content-Type: ‘application/x-www-form-urlencoded’ / ‘multipart/form-data; xxx’
      • 提交的数据的一种编码格式(查询字符串格式 / FormData格式)
    • User-Agent: ‘’
      • 体现了当前客户端是什么浏览器、版本是什么版本
  • 请求体
    • xhr.send(请求体); 客户端提交的数据就是请求体
      • GET方式没有请求体
      • POST方式 才有请求体

http响应消息/响应报文

  • 响应行

    • 协议及版本
    • http状态码 (比如, 200)
    • http状态描述信息 (比如, OK)
  • 响应头

    • Access-Control-Allow-Origin: ‘*’

      • CORS跨域资源共享,服务器设置的响应头,允许ajax跨域
    • Content-Type: ‘application/json; charset=utf-8’

      • 服务器告诉客户端,返回的数据是什么格式的,编码是什么编码

        $.get(url, data, callback, dataType);
        - dataType 表示预期服务器返回的类型jQuery如何知道服务器返回的数据类型呢?是根据响应头中的Content-Type判断,如果判断服务器返回的是json格式,所以jQuery内部就会自动调用JSON.parse()JSON格式的数据转成JS数组或对象$.get(url, data, function (res) {如果响应头没有没有Content-Type,则res 就是字符串手动指定最后一个dataType为json之后,res就是JS对象
        });
        
  • 响应体

    • 服务器返回的主体内容。
    • 就是我们之前所说的,服务器返回的数据。

http响应状态码

  • 200(OK)表示请求成功
  • 201(Created)请求成功,一般用于添加资源成功
  • 304 (Not Modified)表示请求的资源没有修改(第一次请求)
  • 400(Bad Request)语法有误(一般来说,请求参数写错了或者请求头写错了)
  • 403(Forbidden)访问成功了,但是服务器告诉你没有权限访问
  • 404(Not Found)请求的资源,在服务器上不存在,找不到。
  • 500()服务器内部错误

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

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

相关文章

iOS Tips 模拟器屏幕截图

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

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

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

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

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

Git — 初体验

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

iOS CoreTelephony框架介绍与使用案列

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

JS数组的迭代器方法

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

Git 笔记

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

C# webapi 上传下载图片

客户端上传文件 string url url "webUploadFile";Uri server new Uri(url);HttpClient httpClient new HttpClient();MultipartFormDataContent multipartFormDataContent new MultipartFormDataContent();StreamContent streamConent new StreamContent(new F…

OC-@dynamic 关键字

dynamic这个关键词,通常是用不到的。 它与synthesize的区别在于: 使用synthesize编译器会确实的产生getter和setter方法,而dynamic仅仅是告诉编译器这两个方法在运行期会有的,无需产生警告。 假设有这么个场景,B类&…

git -- 练习的笔记

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

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

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

GIT — 使用回顾

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

获取两个数百分比的值

1 /**2 * 获取两个数百分比的值3 * 4 * param num1 5 * param num26 * param retain 保留小数位数7 * return8 */9 public static String numberFormat(int num1, int num2, int retain) { 10 NumberFormat numberFormat …

iOS AVAudioPlayer和AVAudioPlayerDelegate-音频播放处理中断

学习总是在进行。 一、AVAudioPlayer如何处理中断 AVAudioPlayer类提供了代理方法&#xff0c;用来处理当播放音频文件时&#xff0c;发生来电、闹钟等事件。设置代理并遵守AVAudioPlayerDelegate协议,<span style"font-family: Arial, Helvetica, sans-serif;"&g…

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

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

JS,JQ 格式化小数位数

在<script>中&#xff1a; $(function(){   var num$(".price").length;/*获取应用了class"price"的标签数量*/   for(var i0;i<num;i){     if($(".price")[i].innerText!"")       $(".price")[i]…

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

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

windows系统作为客户端时,linux中本地yum源挂载时,如何同时挂载DVD1和DVD2?

这里以CentOS6.5为例.他的镜像有两个DVD1和DVD2.DVD1中是系统和主要的安装包,DVD2中是剩下的安装包 当挂载时如果要同时挂载DVD1和DVD2.需要这样做: 1)在虚拟机的设置中选择连接 2)分别在mnt下创建cdrom和cdrom1文件夹 3)到dev下查看有软连接 cdrom->sr0 cdrom1->sr1 这里…

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

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

OpenCV自带dnn的Example研究(3)— object_detection

这个博客系列&#xff0c;简单来说&#xff0c;今天我们就是要研究https://docs.opencv.org/master/examples.html下的6个文件&#xff0c;看看在最新的OpenCV中&#xff0c;它们是如何发挥作用的。在配置使用的过程中&#xff0c;需要注意使用较高版本的VS避免编译器兼容问题&…