js-ajax方法详解以及封装
本文主要从使用ajax请求的步骤、ajax状态码和http响应状态码以及ajax封装三个方面阐述
一、使用ajax请求的步骤
// 一、创建 XMLHttpRequest 对象
var xhr = new XMLHttpRequest();
// 二、规定请求的类型、URL 以及是否异步处理请求。
// method:get/post
// url:请求地址
// async:true异步/false同步
xhr.open(method,url,async);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");//post方法必需
// 三、将请求发送到服务器
// string仅用于post请求
// get方法传参拼接在url后面即可
xhr.send(string);
// 四、接收响应有两种方法
// 1.新方法,只想要判断http的响应状态码
xhr.onload = function(){
if(xhr.status == 4){
console.log(xhr.responseText);
}
}
// 2.旧方法,想要同时判断Ajax的状态码和http的状态码
xhr.onreadystatechange = function(){
if(xhr.readyState == 200 && xhr.status == 4){
console.log(xhr.responseText);
}
}

二、ajax状态码(readystate)和http响应状态码(status)
1、ajax状态码(readystate)

2、http响应状态码(status)

三、ajax封装
//ajax方法的调用
ajax({
url:请求地址,
success:(res)=>{
//请求数据成功
// console.log(res);
}
})
// ajax封装的方法
function ajax({url,data,success,error,type}){
type = type || "get"; //该参数可选
data = data || {}; //该参数可选
let str = "";
//拼接参数
for(let i in data){
str += `${i}=${data[i]}&`;
}
str = str.slice(0,str.length-1);
//如果请求为get方式则拼接在请求地址后面
if(type === "get"){
var d = new Date();
url = url + "?" + str + "&__qft="+d.getTime();
}
let xhr = new XMLHttpRequest();
xhr.open(type, url, true);
//如果为post请求需要加入固定请求头部
if(type === "get"){
xhr.send();
}else if(type === "post"){
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(str);
}
xhr.onload = function(){
if(xhr.status === 200){
success(xhr.responseText);
}else{
error && error(xhr.status);
}
}
}
js-ajax方法详解以及封装的更多相关文章
- Js apply 方法 详解
Js apply方法详解 我在一开始看到JavaScript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...
- $.ajax()方法详解 jquery
$.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Str ...
- jQuery中 $.ajax()方法详解
$.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Strin ...
- $.ajax()方法详解 ajax之async属性 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )
$.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Str ...
- Js apply方法详解,及其apply()方法的妙用
Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...
- js数组方法详解
Array对象的方法-25个 /*js数组方法详解 */ /* * 1 concat() 用于连接多个数组或者值-------------- * 2 copyWithin() 方法用于从数组的指定位置 ...
- jQuery - Ajax ajax方法详解
$.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Strin ...
- jquery中的ajax方法详解
定义和用法ajax() 方法通过 HTTP 请求加载远程数据.该方法是 jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XML ...
- JS reduce()方法详解,使用reduce数组去重
壹 ❀ 引 稍微有了解JavaScript数组API的同学,对于reduce方法至少有过一面之缘,也许是for与forEach太强大,或者filter,find很实用,在实际开发中我至始至终没使用过 ...
随机推荐
- 这或许是最详细的JUC多线程并发总结
多线程进阶---JUC并发编程 完整代码传送门,见文章末尾 1.Lock锁(重点) 传统 Synchronizd package com.godfrey.demo01; /** * descripti ...
- 基于Memcached的Nginx服务器集群session共享
原料:jdk1.8,tomcat7,nginx1.16,memcached-1.2.6,Mem-Tomcat需要的jar包,基于windows7.所有的点击以下链接可下载 链接:https://pan ...
- vue 路由钩子。
一.全局钩子 你可以使用 router.beforeEach 注册一个全局的 before 钩子: const router = new VueRouter({ ... }) router.befor ...
- java 生成随机字符串
1.生成之指定位数的随机字符串 /** * 随机基数 */ private static char[] charset = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h ...
- 关于idea的一次踩坑记录-Auto build completed with errors
maven项目添加pom依赖后,一直不能正常导入所依赖的jar包,并且报错“ Auto build completed with errors”
- 「雕爷学编程」Arduino动手做(32)——雨滴传感器模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...
- react项目中使用less并修改antd主题样式
一.react项目中使用less 1. 安装配置 npm i -D less less-loader 2. 查看webpack配置 npm run eject 此操作不可逆,生成新的目录. 3. 修改 ...
- React:Lifting State Up
在学习React的组件的时候,我也好奇组件间需要共享状态或通信的时候,React是如何处理的.在文档的QUICK START的提到Lifting State Up(状态提升),并不是什么新鲜东西.只是 ...
- HTML标签和属性三
八.列表 1.列表的作用 让数据有条理的显示,在数据之前添加标识 但是现在页面布局,经常会使用到无序列表 2.列表的组成 ①有序列表 <ol> <li></li> ...
- HTML5新特性 websocket(重点)--多对多聊天室
一.html5新特性 websocket(重点)--多对多聊天室 HTTP:超文本传输协议 HTTP作用:传输网页中资源(html;css;js;image;video;..) HTTP是浏览器搬运 ...