zoukankan      html  css  js  c++  java
  • 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 == 200){
            console.log(xhr.responseText);
        }
    }
    // 2.旧方法,想要同时判断Ajax的状态码和http的状态码
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
            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);
            }
        }
    }
    
  • 相关阅读:
    Java学习--list,set,Map接口使用
    Java学习--java中的集合框架、Collection接口、list接口
    Java学习--使用 Math 类操作数据
    Java学习--Calendar 类的应用
    Java学习--使用 Date 和 SimpleDateFormat 类表示时间
    Java学习--Java 中基本类型和字符串之间的转换
    Java学习网址
    Java开发学习--Java 中基本类型和包装类之间的转换
    Java学习--Java 中的包装类
    builtroot make menuconfig流程
  • 原文地址:https://www.cnblogs.com/piaoyi1997/p/13047735.html
Copyright © 2011-2022 走看看