ajax请求

ajax概述

  1. 组成:asynchronous + javascript + xml
  2. 特点:
    1. 可发送异步请求(这也是与传统请求方式的区别)
    2. 用javascript语言编写代码
    3. 前后端数据交换格式为xml(不局限于xml:例如现在更为常用的json,还有其它格式,例如:普通字符串)
  3. ajax请求的应用场景:需要发送异步请求或者要局部刷新页面

ajax请求核心对象

  1. 核心对象:XMLHttpRequest

  2. 发送ajax请求流程的代码

    1. 发送ajax post请求

      var xhr = new XMLHttpRequest()
      xhr.onreadystatechange = function(){
      if(this.readyState == 4){
      if(this.status == 200){
      //执行代码
      }else{
      //执行代码
      }
      }
      }
      xhr.open("POST", "/ajax/ajaxRequest4", true)
      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
      xhr.send("username="+username.value+"")
    2. 发送ajax get请求

      var xhr = new XMLHttpRequest()
      xhr.onreadystatechange = function(){
      if(this.readyState == 4){
      if(this.status == 200){
      //执行代码
      }else{
      //执行代码
      }
      }
      }
      xhr.open("GET", "/ajax/ajaxRequest4?" + "username="+username+"", true)
      xhr.send()
  3. 获取后端响应的数据

    1. 后端响应json格式的数据

      var jsonObj = JSON.parse(xhr.responseText)
    2. 后端响应xml格式的数据

      response.setContentType("html/xml;charset=utf-8")	//后端要设置响应数据的类型
      var xmlObj = xhr.responseXML	//前端按照xml格式进行数据解析

ajax发送get请求时的缓存问题

  1. ajax get请求有缓存的原因?
  2. 哪些浏览器会发生ajax get请求的缓存问题?
  3. 如何解决ajax get请求的缓存问题?
    1. 提交请求时带上一个时间戳

常用前后端数据交换格式

基于JSON的数据交换

  1. json数据格式的格式规范

    1. {"xxx" : xxx}
  2. 如何解析json格式的数据
  3. 利用fastjson快速生成json格式的字符串

基于XML的数据交换

  1. xml数据格式的格式规范
  2. 如何解析xml格式的数据

两种数据交换格式的对比

  1. json特点:轻量,易解析
  2. xml特点 :体积大,解析较繁琐,但是格式严谨,更安全

ajax乱码问题

  1. 解决方法

     request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");

ajax异步与同步

  1. 特点:类似多线程并发

  2. 设置:

    xhr.open("GET", "/ajax/ajaxRequest4?" + "username="+username+"", true)	//true为支持异步,false为不支持异步

ajax01_基础知识的更多相关文章

  1. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  2. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  3. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  4. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  5. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  6. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  7. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  8. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  9. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

随机推荐

  1. Linux 实现静态路由实验

    环境: 四台主机: A主机:eth0 NAT模式 R1主机:eth0 NAT模式,eth1 仅主机模式 R2主机:eth0 桥接模式,eth1仅主机模式 B主机:eth0 桥接模式 手动修改IP地址 ...

  2. Docker 日志管理最佳实践

    开源Linux 回复"读书",挑选书籍资料~ Docker-CE Server Version: 18.09.6 Storage Driver: overlay2 Kernel V ...

  3. Erdos-Renyi随机图的生成方式及其特性

    1 随机图生成简介 1.1 \(G_{np}\)和\(G_{nm}\) 以下是我学习<CS224W:Machine Learning With Graphs>[1]中随机图生成部分的笔记, ...

  4. Oracle 19c单实例部署

    目录 Oracle 19c单实例部署: 1.配置yum: 2.安装rpm包: 3.设置hostname: 4.配置hostname解析: 5.配置时钟同步服务(ntp): 6.检查及配置内核参数: 7 ...

  5. 命令行参数 getopt模块

    getopt中的函数: getopt.getopt(sys.argv[1:], shortopts, longopts=[]) args指的是当前脚本接收的参数,它是一个列表,可以通过sys.argv ...

  6. zabbix的web界面访问失败问题排查

    现象:用curl访问显示拒绝链接,查看zabbix-server日志也无异常 1.检查防火墙,SElinux是否关闭 2.检查zabbix-server服务是否启动 3.检查80端口是否被占用,比方是 ...

  7. 通过python将阿里云DNS解析作为DDNS使用

    通过python将阿里云DNS解析作为DDNS使用 脚本需要Python2.x运行 安装alidns python sdk sudo pip install aliyun-python-sdk-ali ...

  8. Grafana+Prometheus 搭建 JuiceFS 可视化监控系统

    作为承载海量数据存储的分布式文件系统,用户通常需要直观地了解整个系统的容量.文件数量.CPU 负载.磁盘 IO.缓存等指标的变化. JuiceFS 没有重复造轮子,而是通过 Prometheus 兼容 ...

  9. ES6 Promise 的链式调用

    1.什么是Promise Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息. 2.对象的状态不受外界影响.Promise 对象代表一个异步操作,有三种状态: pending: 初始 ...

  10. jeecgboot-vue3笔记(八)——treeSelect树形选择组件的使用(一次性加载)

    使用效果 前端代码 定义interface export interface TreeDataItem { value: string; key: string; title?: string; sl ...