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管理后的文件,这些文件显示在磁盘上,供我们使用或修改的区域。所以,粗略的说,项目文件夹就是…

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…

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

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

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

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

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

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

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

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

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

大事件-03 用户信息 表单验证 html中&#xff0c;直接使用layui提供的内置验证规则 email <input type"text" name"email" required lay-verify"required|email" placeholder"请输入邮箱" autocomplete"off" class&q…

iOS运行时-使用Runtime向Category中添加属性以及运行时介绍

前言 了解OC的都应该知道&#xff0c;在一般情况下&#xff0c;我们是不能向Category中添加属性的&#xff0c;只能添加方法&#xff0c;但有些情况向&#xff0c;我们确实需要向Category中添加属性&#xff0c;而且很多系统的API也有一些在Category添加属性的情况&#xff0c;…

Git图形化管理工具

Git图形化管理工具 注意&#xff1a;必须在创建的仓库中进行右键打开 复制这段内容后打开百度网盘App&#xff0c;操作更方便哦。 链接&#xff1a;https://pan.baidu.com/s/1eXIk01LXSmzmXvYfw3MnEA 提取码&#xff1a;J166 --来自百度网盘超级会员V5的分享 分类 sourceTr…

TCP/IP(一):数据链路层

背景 这一系列的文章主要是为一般的、非专业开发岗位(如移动端)的工程师准备&#xff0c;一方面可以对网络的基本知识有基本的了解&#xff0c;另一方面不至于面试中被问到相关问题时束手无策。知识以 TCP/IP 协议簇为主&#xff0c;也会有应用层和数据链路层的简单介绍。 文…

Linux系统编程——线程(1)

目录 线程概要Linux内核线程实现原理线程的共享/不共享资源线程优缺点线程控制原语pthread_selfpthread_createpthread_exitpthread_joinpthread_cancel终止线程方式控制原语对比前情提要&#xff1a; Linux用户级线程和内核级线程区别 线程概要 Linux内核线程实现原理 类Unix系…

TCP/IP(二):IP协议

IP协议处于OSI参考模型的第三层——网络层&#xff0c;网络层的主要作用是实现终端节点间的通信。IP协议是网络层的一个重要协议&#xff0c;网络层中还有ARP(获取MAC地址)和ICMP协议(数据发送异常通知) 数据链路层的作用在于实现同一种数据链路下的包传递&#xff0c;而网络层…