js-ajax方法详解以及封装

摘要:
本文主要介绍使用ajax请求、ajax状态代码、http响应状态代码和ajax封装的步骤。1.使用ajax请求的步骤。//1.创建XMLHttpRequest对象varxhr=newXMLHttpRequest()//2.指定请求类型、URL以及是否异步处理请求。

本文主要从使用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 == 200){
        console.log(xhr.responseText);
    }
}
// 2.旧方法,想要同时判断Ajax的状态码和http的状态码
xhr.onreadystatechange = function(){
    if(xhr.readyState == 4 && xhr.status == 200){
        console.log(xhr.responseText);
    }
}

js-ajax方法详解以及封装第1张

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

1、ajax状态码(readystate)

js-ajax方法详解以及封装第2张

2、http响应状态码(status)

js-ajax方法详解以及封装第3张

三、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方法详解以及封装》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JVM调优总结 Xms Xmx Xmn XssPython学习(一) —— matplotlib绘制三维轨迹图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

『AngularJS』$location 服务

参考: ng.$location Developer Guide: Angular Services: Using $location 简介 $location服务解析在浏览器地址栏中的URL(基于window.location)并且让URL在你的应用中可用。改变在地址栏中的URL会作用到$location服务,同样的,改变$location服务也会改...

jquery-tmpl 插件

做项目时页面上有处功能是:在页面有处列表、有添加,我添加修改或删除后要刷新这个列表,首先想到的是局部刷新,但我们一般说的局部刷新就是利于ajax去后台调用数据并显示,而这里是一整个列表就比较麻烦了,刷新重新加载列表时不止要加载列表,还需把table的标签这些都得重新加载下,写在js里或后台都得写 "<table class="datalist">...

爬取csdn的数据与解析存储(9)

安装软件: pip instal pymysq pip install peewee 创建数据模型orm from peewee import * db = MySQLDatabase("spider", host="127.0.0.1", port=3306, user="root", password="root") class BaseModel...

JSONP原理解析

前言 我工作以来接触的第一个项目就是前后端分离的,前端静态文件有自己独立域名,通过接口来获取数据进行渲染等操作。 跨域的方法不需要多言,随便一搜,就有很多,但最常用不外乎jsonp和CORS。jsonp着重于前端,也算是前端Hack技巧,CORS重于后端,服务端需要配置的地方会较多。 这篇解析一下jsonp的实现原理。 基本原理 基本原理很容易说明白,在h...

PYMOTW: CONFIGPARSER

感谢PyMOTW中文翻译小组,这是一个很棒的技术文摘,类似于cookbook。  模块: ConfigParser 目的: 读取/写入配置文件,类似于Windows的INI文件 python版本: 1.5+ 1.1 描述       ConfigParser模块可以为你的应用程序创建用户可编辑的配置文件. 这个配置文件由一个个节组成,每个节可以包含配置数...

background:url 的使用方法

1 #pingfen li{ 2 27px; 3 float:left; 4 height:28px; 5 cursor:pointer; 6 background:url('star.gif') no-repeat 0 0; 7 list-style:none; 8 } bac...