zoukankan      html  css  js  c++  java
  • module6-01-Ajax 基础

    Ajax 基础

    一、Ajax概述

    • 在AJAX之前JS的能力有限,所以web提供的API都处于不联网状态

    • 因为数据存在放服务端,无法通过已知的API获取

    1.1 已知发送请求的方式

    • 地址栏输入地址,回车,刷新

    • 特定元素href和src属性

    • 表单提交

    • 问题:

      • 这些操作都无法利用自己的js代码进行响应(操作)

    1.2 需求

    • 可以对服务端发送请求,并根据返回做出响应

    1.3 Google Suggest

    • AJAX最早出现在2005年的google suggest

    1.4 应用

    • 比如搜索相关关键字

    二、体验Ajax

    2.1 jquery方法的应用

    • $.ajax()

    • 参数:一个对象

      • ① url:服务器地址

      • ② type:get / post

      • ③ dataType:传回来的数据

      • ④ success:若成功返回什么方法

      • ⑤ data:筛选的数据,用对象包裹

    2.2 原生Ajax

    (1)发送步骤

    • ① 创建XMLHttpRequest类型的对象

      • new XMLHttpRequest()

    • ② 准备发送,打开与一个网址之间的连接

      • xhr.open(type, url)

    • ③ 执行发送动作

      • xhr.send()

    • ④ 指定xhr状态变化事件处理函数

      • xhr.onreadyStatechange

        • 函数里面this指向xhr,xhr.readyState === 4即成功

    (2)xhr对象

    • 标准浏览器有XMLHttpRequest()

    • IE6浏览器只有new ActiveXObject('Microsoft.XMLHttp')

    • 建议使用浏览器兼容写法来判断使用哪一种

    (3)open方法

    • 本质上XMLHttpRequest就是JavaScript在Web平台中发送HTTP请求的手段,所以我们发出去的请求仍然是HTTP请求,也符合HTTP约定的格式

    • 语法:xhr.open(method, url)

    • method有:GET、POST、PUT、DELETE

    (4)send方法

    • 用于发送HTTP请求

    • 语法xhr.send(body)

    • body是xhr请求中要发送的数据体,根据请求头中的类型进行传参

      • 如果是get方法的话,把值写在url后面,然后send一个null或者不传参

      • 比如get的话是在url后面?name=harry&age=19

      • body的话是在xhr.send('name=harry&age=19')

    (5)setRequestHeader方法

    • 必须在open和send之间调用

    • 语法:xhr.setRequestHeader(header, value)

    • header:一般设置“Content-Type”,传输数据类型,即服务器需要我们传送的数据类型

    • value:具体的数据类型,常用“application/x-www-form-urlencoded”或者“application/json”

    (6)响应状态分析

    • xhr.readyState属性

    • xhr.onreadystatechange事件

      • 每次状态改变了之后就会触发一次建议等到readyState为4的时候进行数据采集

    2.3 同步和异步

    • 在Ajax中默认是异步进行的,可以通过Ajax.open()的第三个参数设置为false来设置成同步

    • 因为如果同步执行ajax,在send之前,代码都不会在ajax完成之前进行,所以监听响应状态事件要写在open和send之间

    三、Ajax接受的数据

    3.1 xml数据格式

    • 一种数据描述手段,表现为类似于html双标签的代码

    • 缺点:

      • ① 元数据占用的数据量比较大,不利于大量数据的网络传输

      • ② 在其他语言中,比如js,解析内部数据时,方法比较复杂,不方便使用

    3.2 JSON

    • 一种数据描述手段,类似于JS对象字面量的方式,但是还有一些差别

    • 服务端采用JSON格式返回数据,客户端按照JSON格式解析数据

    (1)JS对象字面量与JSON的区别

    • ① JSON数据不需要存到变量中

    • ② 结束时候不用添加分号

    • ③ JSON数据中的属性名必须加引号

    (2)JSON对象

    • 在JS中JS是一个内置对象,里面主要有两个方法stringify、parse

    • ① JSON.stringify():

      • 把数据转换为JSON格式的字符串

    • ② JSON.parse()

      • 把JSON格式的字符串转换为JS对象

    (3)注意

    • 不管是JSON也好还是XML,只是在AJAX请求过程中用到,并不代表他们与AJAX之间有必然的练习,它们只是数据协议

    • 不管服务端采用的是XML还是JSON,本质上都是将数据返回给客户端

    • 服务端应该根据响应内容的格式设置一个合理的Content-Type

    3.3 json-server服务

    • 通过`npm -g install json-server可以下载

    • 通过json-server --watch db.json可以运行

    • 运行成功会开辟一个端口来提供服务使用

    四、封装Ajax函数

    ① 确定传入参数

    ② 兼容IE6写法

    ③ 根据method判断url是否要拼接data,然后open

    ④ 如果是post则添加请求头,然后send

    ⑤ 处理readyState === 4 的结果

  • 相关阅读:
    Linux 常用命令-01
    神经网络工具箱torch.nn -05
    Autograd与计算图-04
    Tensor的索引与变形-03
    Tensor数据类型-00
    Tensor的创建与维度查看-01
    转载:网友对rootfs的理解
    【转载】linux启动流程分析
    windows7 自带计算器bug
    网上同仁对linux文件系统的剖析
  • 原文地址:https://www.cnblogs.com/lezaizhu/p/14455834.html
Copyright © 2011-2022 走看看