AJAX请求

一、HTTP

1、请求报文

POST  /s?ie=utf-8  HTTP/1.1HOST: ceshi.comCookie: name=helloContent-type: application/x-www-form-urlencodedUser-Agent: chrome 83
空行
体	username=admin&password=admin

2、响应报文

HTTP/1.1  200  OK
头	Content-Type: text/html;charset=utf-8Content-length: 2048Content-encoding: gzip
空行
体	<html><head></head><body><h1>HELLO</h1></body><html>

二、AJAX请求的基本操作

//1、创建对象
const xhr = new XMLHttpRequest();
//2、初始化,设置请求方法和url
xhr.open('GET','http://127.0.0.1:8000/server');
//3、发送
xhr.send();
//4、事件绑定,处理服务端返回的结果
//on 当...时候
//readystate 是xhr对象中的属性,表示状态0 1 2 3 4
//change 改变
xhr.onreadystatechange = function(){//判断(服务端返回了所有的结果)if(xhr.readyState === 4){//判断响应状态码 200 404 403 401 500...//2xx 成功if(xhr.status >= 200 && xhr.status < 300){//处理结果 行 头 空行 体//1、响应行console.log(xhr.status);//状态码console.log(xhr.statusText);//状态字符串console.log(xhr.getAllResponseHeaders());//所有响应头console.log(xhr.response);//响应体}else{}}
}

三、AJAX-GET设置请求参数

xhr.open('GET','http://127.0.0.1:8000/server?a=100&b=200&c=300');

四、AJAX发送POST请求

//1、创建对象
const xhr = new XMLHttpRequest();
//2、初始化 设置类型与url
xhr.open('POST','http://127.0.0.1:8000/server');
//3、发送
xhr.send();
//4、事件绑定
xhr.onreadystatechange = function(){//判断if(xhr.readyState === 4){if(xhr.status >= 200 && xhr.status < 300){//处理服务端返回的结果console.log(xhr.response);}}
}

五、AJAX-POST设置请求体

xhr.send('a=100&b=200&c=300');
//xhr.send('a:100&b:200&c:300');

六、AJAX设置请求头信息

//1、创建对象
const xhr = new XMLHttpRequest();
//2、初始化 设置类型与url
xhr.open('POST','http://127.0.0.1:8000/server');
//设置请求头
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
//自定义请求头
xhr.setRequestHeader('name','hello');
//3、发送
xhr.send("123");
//4、事件绑定
xhr.onreadystatechange = function(){//判断if(xhr.readyState === 4){if(xhr.status >= 200 && xhr.status < 300){//处理服务端返回的结果console.log(xhr.response);}}
}

七、AJAX—服务端响应JSON数据

1、手动对返回数据转换

let data = JSON.parse(xhr.response);

2、自动转换

const xhr = new XMLHttpRequest();
xhr.responseType = "json";
xhr.open('GET','url');

八、AJAX—IE浏览器缓存问题解决

const xhr = new XMLHttpRequest();
//请求地址后面加上当前时间戳(解决清除ie浏览器缓存)
xhr.open("GET","http://127.0.0.1:8000/ie?t="+Date.now());
xhr.send();
...

九、AJAX—请求超时与网络异常

const xhr = new XMLHttpRequest();
//超时设置2s设置
xhr.timeout = 2000;
//超时回调
xhr.ontimeout = function(){alert("网络超时,请稍后重试!");
}
//网络异常回调
xhr.onerror = function(){alert("网络异常,请稍后重试!")
}
xhr.open("GET","http://127.0.0.1:8000/delay");
xhr.send();

十、AJAX取消请求

//获取元素对象
const btns = document.querySelectorAll("button");
let x = null;
//发送请求
btns[0].onclick = function(){x = new XMLHttpRequest();x.open("GET","http://127.0.0.1:8000/delay");x.send();
}
//取消请求 abort
btns[1].onclick = function(){x.abort();
}

十一、AJAX请求重复发送问题

//获取元素对象
const btns = document.querySelectorAll("button");
let x = null;
//标识变量
let isSending = false; //是否正在发送AJAX请求
//发送请求
btns[0].onclick = function(){//判断标识变量if(isSending) x.abort(); //如果正在发送,则取消该请求,创建一个新的请求x = new XMLHttpRequest();//修改 标识变量的值isSending = true;x.open("GET","http://127.0.0.1:8000/delay");x.send();x.onreadystatechange = function(){if(x.readyState === 4){//修改标识变量isSending = false;}}
}
//取消请求 abort
btns[1].onclick = function(){x.abort();
}

十二、jQuery中的AJAX

<button class="btn btn-primary">GET</button>
<button class="btn btn-danger">POST</button>
<button class="btn btn-info">通用型方法ajax</button>
//get请求
$('button').eq(0).click(function(){$.get('http://127.0.0.1:8000/jquery-server',{a:100, b:200},funcion(data){console.log(data); //{name:"hello"}},'json');
});
//post请求
$('button').eq(1).click(function(){$.post('http://127.0.0.1:8000/jquery-server',{a:100, b:200},funcion(data){console.log(data); //{"name":"hello"}});
});
//通用型方法发送AJAX请求
$('button').eq(2).click(function(){$.ajax({//urlurl:'http://127.0.0.1:8000/jquery-server',//参数data:{a:100, b:200},//请求类型type:'GET',//响应体结果dataType:'json',//成功的回调success:function(data){console.log(data);},//超时时间timeout:2000,//失败的回调error:function(){console.log('出错');},//头信息headers:{c:300,d:400}});
});

十三、Axios发送AJAX请求

//GET
axios.defaults.baseURL = 'http:127.0.0.1:8000';
btns[0].onclick = function() {//axios.get("http://127.0.0.1:8000/axios-server",{axios.get('/axios-server',{//url参数params:{id:100,vip:7},//请求头信息headers:{name:"zhangSan",age:20}}).then(value => {console.log(value);});
};
//POST
btns[1].onclick = function() {axios.post('/axios-server',{username:"admin",password:"admin"},{//urlparams:{id:200,vip:9},//请求头参数headers:{height:180,width:180}});
};
//axios函数发送ajax请求
btns[2].onclick = funciont(){axios({//请求方式method:'POST',//urlurl:'/axios-server',//url参数params:{vip:10,level:30},//头信息headers:{a:100,b:200},//请求体参数data:{username:'admin',password:'admin'}}).then(response => {console.log(response);});
};

十四、使用fetch函数发送AJAX请求

btn.onclick() = function() {fetch('http://127.0.0.1:8000/fetch-server',{//请求方法method:'POST',//请求头headers:{name:'hello'},//请求体body:'username=admin&password=admin'}).then(response => {//return response.text();return response.json();}).then(response => {console.log(response);});
};

十五、AJAX同源策略

同源:协议、域名、端口号必须完全相同。
跨域:违背同源策略。

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

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

相关文章

Mqtt学习笔记--交叉编译移植(1)

简述 Mqtt目前在物联网行业的应用比较多&#xff0c;mqtt属于应用层的一个中间件&#xff0c;这个中间件实现消息的订阅发布机制。网上介绍Mqtt的实现原来的比较多&#xff0c;这里不细介绍。 其实在我们之前的产品中&#xff0c;自己也开发的有类似的中间件&#xff0c;除了具…

ORB-SLAM2算法12之单目初始化Initializer

文章目录 0 引言1 单目初始化Initializer1.1 构造函数1.2 成员函数1.2.1 Initialize1.2.2 FindHomography1.2.3 FindFundamental1.2.4 ReconstructH1.2.5 ReconstructF 2 总结 0 引言 ORB-SLAM2算法7详细了解了System主类和多线程、ORB-SLAM2学习笔记8详细了解了图像特征点提取…

每日一题 1921. 消灭怪物的最大数量

难度&#xff1a;中等 思路&#xff1a; 已知速度和距离&#xff0c;可求时间必定先消灭时间最短的怪物求得时间数组排序&#xff0c;只要在第 i 秒时&#xff0c;time[i] > i &#xff0c;那么就可以消灭第 i 个怪物 代码&#xff1a; class Solution:def eliminateMax…

理解透API

一、API是什么 当我们谈论API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;时&#xff0c;我们指的是一组定义了软件组件之间如何相互通信的规则和约定。API可以被用于不同的软件、操作系统或服务之间的交互。 API定义了一系列的接…

QT(9.3)定时器,绘制事件

作业&#xff1a; 自定义一个闹钟 pro文件&#xff1a; QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecat…

线程的状态

线程按道理来说应该只有两种状态&#xff0c;分别为就绪状态和堵塞状态&#xff0c;这是系统设定的状态&#xff0c;不过在Java中&#xff0c;把这两个状态又做了进一步细分&#xff0c;分为了6种状态。 1&#xff09;NEW&#xff1a;Thread对象创建好了&#xff0c;但是还没有…

PYTHON知识点学习-列表和元组

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由 Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

GPT带我学-设计模式-迭代器模式

1 什么是迭代器设计模式&#xff1f; 迭代器设计模式是一种行为型设计模式&#xff0c;用于提供一种统一的方式来遍历一个集合对象中的元素&#xff0c;而不需要暴露该对象的内部结构。它将集合对象的遍历操作与集合对象本身分离开来&#xff0c;使得遍历操作可以独立于集合对…

科目1基础知识快速入门精简

科目1-4 科目一&#xff0c;又称科目一理论考试、驾驶员理论考试。》学习道路交通安全法律、法规和相关知识学习 考试内容包括驾车理论基础、道路安全法律法规、地方性法规等相关知识&#xff0c;再加地方性法规。考试形式为上机考试&#xff0c;100道题&#xff0c;90分及以…

Python安装

windows安装Python python官网 python官网下载 打开下载链接选择需要下载的python版本。 点击版本号或者Download按钮进入下载页面&#xff0c;滚动到页面最下面可看到各个平台的 Python 安装包。 选择Operating System项为Windows的文件&#xff0c;这里我们选择windows64位…

用户中心笔记-leovany

1. 安装 官方地址&#xff1a;https://pro.ant.design/zh-CN/docs/getting-started 1.1 Mac系统 1.1.1 安装yarn 安装yarn brew install yarn查看版本 brew -v 1.1.2 安装node // 安装node brew install node // 关联 brew unlink node && brew link node // 查看版…

【开发语言】C语言与Python的互操作详解

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

在 Python 中构建卷积神经网络; 从 0 到 9 的手绘数字的灰度图像预测数字

一、说明 为了预测从0到9的数字&#xff0c;我选择了一个基于著名的Kaggle的MNIST数据集的数据集。数据集包含从 <0> 到 <9> 的手绘图数字的灰度图像。在本文中&#xff0c;我将根据像素数据&#xff08;即数值数据&#xff09;和卷积神经网络预测数字。 二、 卷积…

不可变集合、Lambda表达式、Stream流

不可变集合、Lambda表达式、Stream流 创建不可变集合 不能被修改的集合 应用场景 如果某个数据不能被修改&#xff0c;把它防御性的拷贝到不可变集合中是个很好的实践。 当集合对象被不可信的库调用时&#xff0c;不可变形式是安全的。 创建不可变集合 在List、Set、Map接口中…

leetcode 189. 轮转数组

2023.9.3 k的取值范围为0~100000&#xff0c;此时需要考虑到两种情况&#xff0c;当k为0时&#xff0c;此时数组不需要轮转&#xff0c;因此直接return返回&#xff1b;当k大于等于数组nums的大小时&#xff0c;数组将会转为原来的数组&#xff0c;然后再接着轮转&#xff0c;此…

2.神经网络的实现

创建神经网络类 import numpy # scipy.special包含S函数expit(x) import scipy.special # 打包模块 import pickle# 激活函数 def activation_func(x):return scipy.special.expit(x)# 用于创建、 训练和查询3层神经网络 class neuralNetwork:# 初始化神经网络def __init__(se…

C语言中内存分配的几种方式

目录 C语言中内存分配的几种方式静态内存分配栈内存分配堆内存分配内存映射文件 C语言中内存分配的几种方式 静态内存分配 静态内存分配是在程序编译时分配内存&#xff0c;通常用于全局变量和静态变量。这些变量的内存空间在程序的整个运行期间都是存在的。 栈内存分配 栈内存…

租服务器训练深度学习模型

一、选择租哪个 推荐用AutoDL(便宜、功能强大、gug少、有时时客服解决问题) AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL 二、注册、登录 学生可以认证&#xff0c;享受会员价 服务器需要登录后先充值&#xff0c;先充个10元&#xff0c;接下来试试看。每次都是开机…

Stable Diffuse 之 安装文件夹、以及操作界面 UI 、Prompt相关说明

Stable Diffuse 之 安装文件夹、以及操作界面 UI 、Prompt相关说明 目录 Stable Diffuse 之 安装文件夹、以及操作界面 UI 、Prompt相关说明 一、简单介绍 二、安装文件相关说明 三、界面的简单说明 四、prompt 的一些语法简单说明 1、Prompt &#xff1a;正向提示词 &am…

docker常见面试问题详解

在面试的时候&#xff0c;面试官常常会问一些问题&#xff1a; docker是什么&#xff0c;能做什么&#xff1f;docker和虚拟机的区别是什么呢&#xff1f;docker是用什么做隔离的&#xff1f;docke的网络类型&#xff1f;docker数据之间是如何通信的&#xff1f;docker的数据保…