myJS
  • 说明
  • js核心
  • 函数式编程
    • 链式优化
    • 你真的知道函数吗?
    • 纯函数
    • 函数柯里化
  • 内存的那些事
    • 栈内存和堆内存
    • 垃圾回收机制-GC
    • 闭包恍然大悟
      • 运行时的词法作用域
    • 数据结构基于内存
    • 怎样用chrome devtool 查看内存泄漏状况
    • dom元素的内存泄漏例子讲解
  • 网络请求
    • 原生js请求
    • https了解一下
    • 跨域方法
    • 你不知道的浏览器页面渲染机制
    • 聊点 TCP 干货(1)
  • 异步编程
    • await 和 async
  • 服务器
    • nginx
  • 模块化编程
    • commonJs模块
    • ES模块
    • AMD模块
    • CMD模块
    • module.exports与export那些事儿
  • webpack
    • 环境变量的使用
      • node配置
      • webapck配置
    • postcss处理css
    • webpack-dev-server
    • HMR热更新原理
    • babel配置
      • 转化es6
      • Runtime transform/runtime
    • extract-text-webpack-plugin
    • css加载
    • 打包优化
    • 第三方插件加载中
    • 热更新踩坑
    • typescript+node
    • 代码分割的意思
  • CMD命令行
    • 文件的增删改查
  • node
    • path模块
    • node 文件路径的分析
  • js一些资源库
  • node毛皮
    • cnpm 淘宝镜像
  • 浏览器调试
    • js调试
    • 浏览器同源政策及其规避方法
  • 好好理解变量
    • this指向
    • 作用域
  • 专有名词理解
    • MVC
  • postman
    • 环境变量
  • 树的遍历和操作
    • 二叉树
  • 关于Date你要知道的是?
    • 获取某个月的天数
    • js 日期详解
  • Dom 对象
  • 回调函数
    • 语法。为什么要用
  • class 怎样用好类
    • 用类直接创建对象关联到变量
  • js引擎
  • git操作
    • .gitignore忽略文件
    • 删除操作
  • table学习
    • 表格样式
    • 固定列和行
  • 拖拽
    • 目标容器
    • 狐火的拖拽就是不一样
  • 正则学习
  • 算法
    • 数据结构
  • js小技巧
  • indexDB
  • Matrix 矩阵
Powered by GitBook
On this page

Was this helpful?

  1. 网络请求

原生js请求

Previous网络请求Nexthttps了解一下

Last updated 6 years ago

Was this helpful?

原文地址:

XMLHttpRequst详解:

主要是用XMLHttpRequest ,主要分三个步骤

  • 实例化 XMLHttpRequest 对象。

  • 根据请求过程处理请求结果

  • 调用open方法,发送请求地址和参数以及请求方式, 建立连接

  • 调用send方法发送请求

  function xhrAjax(obj,success,fail){
          var xhr = new XMLHttpRequest();

          xhr.onreadystatechange=function(){
                  if(xhr.readystate==4){
                          var status = xhr.status ;
                          if(status >= 200 && status <300 ){
                                  var response = xhr.responseText;
                                  success(response);
                          }else{
                                  fail(status);
                          }
                  }
          };
          //prams的格式 name=sekin&&age=13 格式是要自己去处理的    
          switch (obj.method){
                  case "get" :      
                        xhr.open(obj.method,obj.url+"?"+obj.params,true);//true表示异步
                        xhr.send(null);
                        break;
                  case "post" :
                          xhr.open(obj.method,obj.url);
                          xhr.setRequestHeader("Content-Type", obj.contentType);// application/json application/x-www-form-urlencoded              
                          xhr.send(params);
                        break;

          }                  
  }

XMLHttpReaues 请求的过程中readstate的状态共有5个

  • 0:请求还没有开始,未调用open 方法

  • 1:建立请求连接,调用open方法

  • 2:发送请求参数,调用send方法

  • 3:正在响应请求结果,还没响应完成

  • 4:请求响应完成。

原生的js请求方法xhrAjax写好了,参数有三个 obj:发送XMLHttpRequest请求的类型和参数,以及post方法的请求头类型,success:成功的回调涵,fail:失败的回调函数。

现在,当我们返回的是文档流的时候:

var obj = {
        url:"www.test.com/test",
        method:"post",
        contentType:"application/json",
        params:JSON,stringify({
            arr:[
                    {name:"1",age:"23"},
                    {name:"2",age:"27"},
                ],
            id:"3456",
        }),
};

xhrAjax(obj,success,fail);

function fail(status){
    alert(status);
}

function success(response){
    var readFile = new FileReader();
    var fileBase64 = readRile.readAsDataURL(respose); //把二进制的文档流转化成base64,可直接放在地址里
    //转发的过程
    readFile.onload=function(e){
        var aEl = document.createElement("a");
        aEl.download="xxx.xlsx";//命名文件名;
        aEl.href = e.target.result;
        document.body.appendChild(aEl);
        aEl.click();
        document.body.removeChild(aEl);
    }
};
https://m.jb51.net/article/122797.htm
http://caibaojian.com/ajax-jsonp.html