john-book
  • 测试
    • vue单元测试
  • 介绍
  • 设计模式
    • 单例模式
  • 个人收藏
    • 房价未来趋势
  • TodoList
  • TaskList
  • 前端架构设计
  • 时间管理
    • 2019前端自检与思考
  • 前端技术点
    • 异步编程和同步编程
    • 继承实现的几种方式
    • Http请求
    • 前端CI/CD持续集成持续交付
    • Promise
    • 其他工具
    • iphonex以及适配
    • 前端骨架屏方案
    • nginx
      • nginx配置upstream负载均衡
      • nginx配置gzip压缩
      • nginx转发配置
    • ajax
    • Dom&BOM
    • flexible
    • jsonp
    • 跨域
    • nunjucks
    • 水平垂直居中
    • 原型和原型链
    • 本地存储方式
    • 无头浏览器
    • chrome插件开发
    • webpack
      • DllPlugin
      • webpack升级
    • 宏任务微任务
    • 页面加载流程
    • http请求流程
    • 图形绘制技术
    • 节流和防抖
    • webpack单页面改多页面
    • redis安装使用
    • git
      • gitignore的使用
  • 算法
  • 前端资料
    • 开源技术库
    • 资料&文档
      • 信息流页面闪开总结
    • 每日收藏
  • 工具
    • UML图
    • Markdown
    • 测试工具
    • 产品工具
  • 站点博客
    • 站点集锦
  • 框架&库
    • React
    • Vue
    • vue3.0
  • 性能优化
    • 性能优化原则和方法
    • Http协议
      • Http Request Header
      • Http Response Header
  • LowCode
    • landingpage
    • landingpage自动化部署
    • landingpage相关
  • 加密
  • 腾讯云服务器
  • 微信公众号开发
  • 微信小程序
    • 小程序埋点统计
    • app分享小程序绑定
  • 数据库
    • 数据库实时抽取
  • 效率
    • 快速生成层级结构图
    • vscode插件vue模版
    • vscode文件头部注释插件
    • 快速生成项目目录结构树
    • vscode格式化配置
    • 前端组件化
  • 前端工作
  • 可视化
    • 页面可视化搭建
  • 前端规范
    • Javascript规范
    • git提交规范
    • eslint三大通用规范
Powered by GitBook
On this page
  • Ajax核心对象
  • Ajax类型
  • Ajax请求流程
  • Ajax请求方法/属性
  • readyState:
  • Status:
  • 原生JS实现XMLHttpRequest:
  • jQuery Ajax
  • 写法:
  • options:
  • ajax请求中断
  • 相关核心知识

Was this helpful?

  1. 前端技术点

ajax

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)

Ajax核心对象

XMLHttpRequest

创建 XMLHttpRequest 对象的语法如下:

var xhr = new XMLHttpReuqest();

Ajax类型

  • get

       * 更简单更快
       * url添加参数
       * 可以缓存并可在浏览器直接访问接口
       * 根据浏览器有最大字符限制(chrome8000左右)
  • post

       * 数据量更大更安全
       * data参数传递
  • put

  • delete

Ajax请求流程

  • 实例化对象

  • 设置回调函数

  • 调用open方法建立连接

  • 向服务器发送数据

  • 响应状态处理

Ajax请求方法/属性

  • open()

  • send()

  • onreadystatechange()

readyState:

  • 0:请求未初始化(调用open()之前)

  • 1:请求已提出(调用send()之前)

  • 2:请求已发送(已经可以从响应得到内容头部)

  • 3:请求处理中(响应中,部分数据可用,服务器未完全响应)

  • 4:请求已完成(得到响应结果,可进行客户端处理)

Status:

200: 请求成功(OK)

201: 请求创建(Created)

202: 请求已接受(Accepted)

301: 永久重定向

302: 临时重定向

304: 未修改使用缓存

400: 请求参数有误

403: 请求禁止(forbidden)

404: 请求不存在(Not Found)

500: 服务器错误

原生JS实现XMLHttpRequest:

function GetXMLHttpRequest () {
    var xmlHttp;
    try{
        xmlHttp=new XMLHttpRequest();
    }catch(e){
        try{
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");//IE6以上
        }catch(e){
            try{
                xmlHttp = new ActiveXObject ("Microsoft.XMLHTTP");//IE6以下
            }catch(e){
                alert("您的浏览器不支持AJAX!");
               return false;
            }
        }
    }
    return xmlHttp;
}

function request(type, url, callback, data){
    var xmlHttp=GetXMLHttpRequest();
    xmlHttp.open(type,url,true);//异步请求
    if(type.toUpperCase() == 'GET') {
         xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // 添加http头,发送信息至服务器时内容编码类型
    }
    xmlHttp.onreadystatechange = function(){
        if(xmlHttp.readyState ==4 && (xmlHttp.status == 200 || xmlHttp.status == 304)){
            callback && callback.call(this, xmlHttp.responseText); 
        }
    }
    xmlHttp.send(data);//发送请求
}
request('GET','www.baidu.com',function(res){
    //处理返回数据
});

jQuery Ajax

写法:

$.ajax(options),option为对象参数

options:

参数名

类型

描述

url

string

请求地址

type

string

请求类型(GET,POST,PUT,DELETE),默认GET

timeout

Number

超时时间

async

Boolen

异步(true)或同步(false),默认true异步请求

data

Object,string

请求参数数据,

dataType

String

预期响应数据类型,不指定将自动根据HTTP的MIME信息返回responseXML或responseText,可用值: “xml”,‘html’,‘script’,‘json’,‘jsonp’

contentType

String

(默认:"application/x-www-form-urlencoded")

success

Function

请求成功后执行的回调函数,两个参数 返回数据,返回状态。 function(data,status){}

error

Function

请求失败执行的回调函数,有三个参数 XMLHttpRequest请求对象, 错误信息,捕获的错误对象

headers

Object

自定义请求头参数,beforeSend之前发送

beforeSend

Function

发送请求前可修改XMLHttpRequest对象的函数,如添加自定义HTTP头

complete

Function

请求完成(成功或失败)后执行的回调函数,参数:XMLHttpRequest对象,成功信息字符串

done

Function

jquery1.5之后成功回调函数,实现promise

fail

Function

jquery1.5之后失败回调函数,实现promise

always

Function

jquery1.5之后完成回调函数,实现promise

then

Function

jquery1.5之后实现promise的执行队列函数

ajax请求中断

flag标记请求状态,执行abort()方法

相关核心知识

http协议:

  • 1.0:短连接

  • 1.1:长连接(开始支持)

Previousnginx转发配置NextDom&BOM

Last updated 6 years ago

Was this helpful?

参考 链接:🔗

https://segmentfault.com/a/1190000011145364