当前位置: 首页 > news >正文

Ajax、Json深入浅出,及原生Ajax及简化版Ajax

Ajax

1.路径介绍

1.1 JavaWeb中的路径

在JavaWeb中,路径分为相对路径和绝对路径两种:

 相对路径:

./ 表示当前目录(可省略)

 ../ 表示当前文件所在目录的上一级目录

 绝对路径:

http://ip:port/工程名/资源路径

2.2 在JavaWeb中/的不同意义

 / 斜杠 如果被浏览器解析,得到的地址是:http://ip:port/

<a href="/">斜杠</a>

<form action="/">

 / 斜杠 如果被服务器解析,得到的地址是:http://ip:port/工程路径/

 <url-pattern>/Servlet1</url-pattern>

 request.getRequestDispatcher(“/”)

 特殊情况:response.sendRedirect(“”);把斜杆发给浏览器去解析,得到http://ip:port/

2.ajax请求

2.1浏览器与服务器交互请求方式

浏览器和服务器进行数据交互的基本流程为:

1. 浏览器发起http请求

2. 服务器收到请求,对请求进行解析

3. 服务器根据请求解析结果调用对应的资源处理请求

4. 服务器将处理结果响应给浏览器

5. 浏览器收到响应结果,对结果数据进行解析

6. 浏览器将解析后的数据展示在页面

方式:

  1. 浏览器url地址栏中发起http请求
  2. 适用超链接,a标签
  3. 适用form表单提交
  4. [window.]location.href=””  本质第一种方法

2.2ajax(异步javascript和xml请求)

特点:

1. 一种新的让浏览器发起http请求的技术

2. 使用ajax发起的请求,响应结果不会自动的覆盖原有内容,而是可以在原有页面内容上继续显示

3. Ajax是一门基于JavaScript的技术,由浏览器解析运行,所以是一种前端(客户端)技术

4. 简单易用

2.3.1同步与与异步请求

同步请求:

发送请求后,一直等待服务端的响应,获取到服务端响应,再执行其他的逻辑代码。

  1. 在浏览器地址栏输入url,发起请求

  2. 使用超链接,发起请求

  3. 使用form表单,发起请求

  4. 在js代码中使用window.location.href,发起请求

  5. ajax发起同步请求

     ajax与其他方式发送同步请求的区别:  ajax可以局部刷新, 其他的请求会刷新整张页面

异步请求:

发送请求后,不需要等待服务端的响应,继续按照顺序执行其他逻辑代码,监听到响应,自动调用指定的方法。

2.3.2js-ajax请求(XMLHttpRequest)

 1. Ajax的就绪状态(readystate)

在ajax对象中提供了一个监听机制 “onreadystatechange”,用来监听ajax的属性readyState的改变情况,一旦该值改变,就会触发监听中的函数的执行。

readyState的值表示的含义:

 0:请求没有开启(在调用open()之前)

 1:请求已经建立但是还没有发出(调用send()之前)

 2:请求已经发出,服务器正在处理

 3:请求已经处理,响应中有数据可用,但是服务器还没有完全响应完

 4:响应已经完成,浏览器已经接收到全部的响应内容

对我们来说,我们应该关注的是readyState是4时候的情况。

2. Ajax请求的响应状态

        通过对ajax的就绪状态做判断,我们在就绪状态是4的情况下编写我们的对响应结果的处理逻辑代码,但是不是任何响应结果我们都要处理,因为服务器的响应也有状态码,比如:200、404、500等等。

        所有我们在ajax中编写响应结果处理时,也必须考虑响应状态码

// 页面加载完成后执行  或者 $(function(){})   或 $(document).ready(function (){})
window.onload = function () {/** ajax 异步请求 获取花卉信息*   异步:程序不需要等待获取结果,线程直线完成后通知程序,程序获取  例如 AIO  异步非阻塞IO*   同步:程序需要等待线程获取结果后,程序才能继续执行  例如:BIO 同步阻塞IO   NIO 同步非阻塞IO* 1. 创建xhr XMLHttpRequest对象* 2. 开启请求连接*       参数1:请求方式*       参数2:请求资源路径*       参数3:asyn 异步,默认true,设置false为同步* 3. 发送请求* 4. 监听准备状态码的变化*       0. 已创建xhr对象,未建立连接*       1. 建立连接,未发送请求*       2. 发送请求,服务端接收请求并处理*       3. 服务端向客户端响应,不是完整的响应,通常用于获取请求头中的信息*       4. 服务端完成向客户端的响应*    状态码200 接口请求响应成功* */var xhr = new XMLHttpRequest(); // 创建ajax请求对象xhr.open("get", "../findAllFlowers"); // 开启连接xhr.send(); // 发送请求// 监听准备状态的改变xhr.onreadystatechange = function (ev) {if (xhr.readyState == 4 && xhr.status) {var responseText = xhr.responseText;console.log(responseText);if (responseText != "fail") {// var result = convertStrToJs(responseText);var result = JSON.parse(responseText);for(var i in result){var html = "<tr class='tr"+result[i].id+"'>" +"    <td>"+result[i].id+"</td>" +"    <td>"+result[i].name+"</td>" +"    <td>"+result[i].city+"</td>" +"    <td>"+result[i].des+"</td>" +"    <td>" +"        <a href='javascript:void(0)' onclick='deleteFlower("+result[i].id+")'>删除</a>" +"        <a href='javascript:void(0)'>修改</a>" +"    </td>" +"</tr>";$("#tb").append(html); // 追加元素}}}}
}

3.json(JavaSrcipt Object Nation)Js对象标记法

在没有使用json之前,通过对对象的toString方法传递数据

GSON是google转json字符串的工具

fastJson 是阿里转json字符串的工具

json数据是指:js对象对应的字符串数据;

JQuery封装的ajax

问题:目前我们编写的Ajax代码访问服务器及对响应结果的处理流程如下:

1. 在页面编写Ajax相关代码

   1. 创建xhr对象

   2. 开启连接

   3. 发起请求

   4. 监听准备状态的变化

2. 用户通过浏览器访问页面

3. 用户在浏览器中触发事件,发起ajax请求

4. 服务器收到请求进行处理,处理完后按照json格式的字符串响应给浏览器

5. 浏览器收到响应数据后,触发回调函数的执行;

jQuery是js的一个库,其实jQuery中已经对Ajax完成了封装,而且形式多样!

第一种:

$.ajax({

    type:“请求方式(默认get方法)”, 可不写

    url:“请求地址”, 请求资源路径

    data:{请求参数--js对象}无参数可不写,

   dataType:"服务器返回的数据类型" json 返回data为js对象格式

    success:fundction(data){ //成功且完整响应自动调用的函数

    data为接口响应的数据

},

    error: function(){ //出现错误自动调用的函数

       当服务端500或客户端404出现错误,执行该函数

    }

})

dataType:用来指定服务器返回来的数据类型,可选值有如下:

* xml:表示服务器返回的是xml内容

* html:表示服务器返回的是html文本内容

* script:表示服务器返回的是script文本内容

* json:表示服务器返回的是json内容(重点)

* jsonp:表示使用jsonp形式调用函数,早期我们用它来解决跨域问题

* text:表示服务器返回的是纯文本字符串

第二种:

 $.get(“请求地址”,“请求参数js对象”,成功回调函数,  返回的数据类型)

$.post(“请求地址”,“请求参数js对象”,成功回调函数, 返回的数据类型)

省略:请求方式、出现错误的回调函数

  回调函数主要是用来处理服务器对我们的响应结果。

  返回的数据类型这个参数用来设置服务器返回来的数据类型,可以是xml, html, script, json, text。

第三种:

  $.getJSON("请求地址", "请求参数", "回调函数")

  这种方式要求服务器返回的数据类型得是json格式的。

第四种:

$.getScript("请求地址", "回调函数")

  这种方式是发送ajax请求获取一个js文件。

相关文章:

Ajax、Json深入浅出,及原生Ajax及简化版Ajax

Ajax 1.路径介绍 1.1 JavaWeb中的路径 在JavaWeb中&#xff0c;路径分为相对路径和绝对路径两种&#xff1a; 相对路径&#xff1a; ./ 表示当前目录(可省略) ../ 表示当前文件所在目录的上一级目录 绝对路径&#xff1a; http://ip:port/工程名/资源路径 2.2 在JavaWeb中…...

前端第一阶段测试

前端第一阶段测试 选择问答 如果觉得有用请给我点个赞⑧~ 选择 1、【单选】下列哪个是子代选择器 A A、p>b B、p b C、pb D、p.b 2、【单选】下述有关css属性position的属性值的描述&#xff0c;说法错误的是&#xff1f;B A、static&#xff1a;没有定位&#xff0c;元素出…...

openlayers+vue的bug

使用addInteraction添加交互draw绘制&#xff0c;预期removeInteraction删除交互draw绘制时不再绘制&#xff0c;但是删除绘制不起作用&#xff0c;各种找原因&#xff0c;结果把data中的map变量注释掉即可&#xff0c;原因未知。 <template><div><div id"…...

实时数仓-Hologres介绍与架构

本文是向大家介绍Hologres是一款实时HSAP产品&#xff0c;隶属阿里自研大数据品牌MaxCompute&#xff0c;兼容 PostgreSQL 生态、支持MaxCompute数据直接查询&#xff0c;支持实时写入实时查询&#xff0c;实时离线联邦分析&#xff0c;低成本、高时效、快速构筑企业实时数据仓…...

asp.net教务管理信息系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio计算机毕业设计

一、源码特点 asp.net 教务管理信息系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net教务管理系统 应用技术&a…...

爬虫、数据清洗和分析

爬虫、数据清洗和分析是在数据科学、数据挖掘和网络爬虫开发领域中常见的概念。 爬虫&#xff08;Web Scraping&#xff09;&#xff1a;爬虫是一种自动化程序或脚本&#xff0c;用于从互联网上的网站上提取信息。这些信息可以是文本、图像、视频或其他类型的数据。爬虫通常会…...

SpringBoot | SpringBoot中实现“微信支付“

SpringBoot中实现"微信支付": 1.“微信支付”产品2."微信支付"接入流程3.“微信小程序支付”时序图&#xff1a;3.1 “商家端JSAPI下单” 接口3.2 “微信小程序端调起支付” 接口 4.微信支付准备工作&#xff1a;4.1 获得微信支付平台证书、商户私钥文件4…...

基于SSM和VUE的留守儿童信息管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…...

VMware 16开启虚拟机电脑就蓝屏W11解决方法

问题现象 解决方法 控制面板->程序->启用或关闭windows功能->勾选虚拟机平台->重启...

【Bug——VMware Workstation】虚拟机桥接网络没有 VMnet0

此时 没有VMnet0用来桥接网络。 接下来进行解决 1.找到安装VM的路径&#xff0c;在安装的目录里面找到如图所示的三个文件&#xff1a; 2.依次点击鼠标右键 将这三个文件依次安装如图所示&#xff1a; 二.windows下的操作 1.首先 找到电脑的控制面板->网络和internet->…...

centos中安装Mysql8.0

其实和mysql5.7的安装差不多 1.root用户 2.更新密钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 3.安装mysql yum库 rpm -Uvh https://dev.mysql.com/ get/mysql80-community-release-el7-2.noarch.rpm 4.通过上两步&#xff0c;我们就可以使用yum去安装…...

简化对象和函数写法

简化对象写法&#xff1a; 传统写法&#xff1a; var x 10, y 20; var obj {x: x, y: y};简化写法&#xff1a; var x 10, y 20; var obj {x, y};简化函数写法&#xff1a; 传统写法&#xff1a; function add(x, y) {return x y; }简化写法&#xff1a; var add …...

GB/T28181流媒体相关协议详解

GB/T28181流媒体相关协议详解 文章目录 GB/T28181流媒体相关协议详解1 GB/T28181协议中使用的应用层协议介绍2 实时视频点播协议交互流程2.1 设备注册2.2 设备保活2.3 视频播放 总结 本文主要主要针对28181协议中视频流的部分&#xff0c;来阐述视频流通过28181协议如何进行视频…...

十进制转二进制的算法代码 ← Python

【算法分析】 本算法需要用到的Python知识点&#xff1a; 1.求余%&#xff0c;整除 //。例如&#xff0c;7%21&#xff0c;7//23&#xff0c;而7/23.5。 2.Python列表的 append 及 pop 函数。 • append(x) 函数用于将 x 添加到现有列表中。 • pop() 函数默认移除列表中…...

智慧垃圾站:AI视频智能识别技术助力智慧环保项目,以“智”替人强监管

一、背景分析 建设“技术先进、架构合理、开放智能、安全可靠”的智慧环保平台&#xff0c;整合环境相关的数据&#xff0c;对接已建业务系统&#xff0c;将环境相关数据进行统一管理&#xff0c;结合GIS技术进行监测、监控信息的展现和挖掘分析&#xff0c;实现业务数据的快速…...

LeetCode 面试题 16.07. 最大数值

文章目录 一、题目二、C# 题解 一、题目 编写一个方法&#xff0c;找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。 示例&#xff1a; 输入&#xff1a; a 1, b 2 输出&#xff1a; 2 点击此处跳转题目。 二、C# 题解 找出最大的数&#xff0c;本质还是…...

PS 安装教程 2022版(全网最详细图文教程)

目录 一.简介 二.安装步骤 软件&#xff1a;PS版本&#xff1a;2022语言&#xff1a;简体中文大小&#xff1a;2.83G安装环境&#xff1a;Win10&#xff08;1903&#xff09;及以上版本&#xff0c;64位操作系统硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff0c;不支…...

[Python] OSError: [E050] Can‘t find model ‘en_core_web_sm‘.

OSError: [E050] Can’t find model ‘en_core_web_sm’. It doesn’t seem to be a Python package or a valid path to a data directory. 下载模型 python -m spacy download en_core_web_sm加载模型 import spacy# 加载英语模型 nlp spacy.load("en_core_web_sm&q…...

集合总结(Java)

Collection 常用方法 package com.test01;import java.util.ArrayList; import java.util.Collection; /*添加元素---boolean add(E e);移除元素---boolean remove(Object c);判断元素是否存在---boolean contains(Object c);*/ public class S {public static void main(Str…...

【ONE·Linux || 网络基础(一)】

总言 主要内容&#xff1a;简述网络传输流程&#xff08;TCP/IP五层模式概念认知&#xff0c;Mac地址、端口号、网络字节序等&#xff09;&#xff0c;演示socke套接字编程&#xff08;UDP模式&#xff09;。 文章目录 总言1、基础简述1.1、计算机网络背景1.2、认识网络协议&a…...

Day12力扣打卡

打卡记录 找出满足差值条件的下标 II&#xff08;双指针维护最大最小&#xff09; 链接 采用双指针保留间隔 indexDifference 进行遍历&#xff0c;求出慢指针对应一路遍历过来的最大值和最小值。 class Solution { public:vector<int> findIndices(vector<int>…...

SQL注入原理及思路(mysql)

数据库知识 mysql数据库 show database; #列出所有数据库 show tables; #列出所有表名 show columns from 表名; #列出表的列 select * from 表名 #查询数据库中某表的信息 select * from 表名 where 列xx #查询某表中符合列xx的信息 select * from 表名 order by 数字 #用于将…...

vue核心面试题汇总【查缺补漏】

给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;web前端面试题库 很喜欢‘万变不离其宗’这句话&#xff0c;希望在不断的思考和总结中找到Vue中的宗&#xff0c;来解答面试官抛出的…...

使用WebStorm创建和配置TypeScript项目

创建 这里我用的是WebStorm 2019.2.2版本 首先&#xff0c;创建一个空项目 File -> New -> Project->Empty Project生成配置文件 自动配置&#xff1a; 打开终端输入tsc --init&#xff0c;即可自动生成tsconfig.json文件 手动配置&#xff1a; 在项目根目录下新建一…...

vue源码分析(四)——vue 挂载($mount)的详细过程

文章目录 前言一、使用RuntimeCompiler解析$mount的原因二、$mount 解析的详细过程1.解析挂载的#app执行了vm.$mount2. 通过$mount方法执行以下文件的mount方法3. 执行util工具文件夹中的query方法4. 执行query方法后返回$mount方法判断el是否是body5. 判断!options.render&…...

真机环境配置教程

1.下载安装包 https://developers.google.com/android/images 2.刷机教程 Xposed精品连载 | 一篇文章彻底搞定安卓刷机与Root 3.配置root...

新电脑第一次重启后蓝屏

新电脑第一次重启后蓝屏 悲惨事故&#xff0c;远程参加插电第一次开机&#xff0c;按“FNShiftF10”启动cmd窗口输入oobe\bypassnro 回车重启跳过网络连接&#xff0c;设置一个用户名密码设置为空&#xff0c;不设密码确定&#xff0c;进入系统软件操作磁盘操作&#xff08;磁盘…...

k8s statefulSet 学习笔记

文章目录 缩写: stsweb-sts.yaml创建sts扩缩容金丝雀发布OnDelete 删除时更新 缩写: sts 通过 kubectl api-resources 可以查到&#xff1a; NAMESHORTNAMESAPIVERSIONNAMESPACEDKINDstatefulsetsstsapps/v1trueStatefulSet web-sts.yaml apiVersion: v1 kind: Service met…...

gitlab 通过变量连接自建K8S

services:- docker:19.03.7-dind- golang:1.17.8-alpine3.15- docker:stable stages:- package- build and push docker image- deploy variables:KUBECONFIG: /etc/deploy/config build:tags:- k8simage: golang:1.17.8-alpine3.15stage: package# 只作用在main分支only:- mai…...

LuatOS-SOC接口文档(air780E)--mcu - 封装mcu一些特殊操作

常量 常量 类型 解释 mcu.UART number 外设类型-串口 mcu.I2C number 外设类型-I2C mcu.SPI number 外设类型-SPI mcu.PWM number 外设类型-PWM mcu.GPIO number 外设类型-GPIO mcu.I2S number 外设类型-I2S mcu.LCD number 外设类型-LCD mcu.CAM num…...