什么是Ajax

目录

1、什么是Ajax?

2、为什么说Ajax的语言载体是JavaScript?

3、Ajax的特点

4、什么是异步请求?

5、Ajax的运行原理

6、JQuery的Ajax技术

[1).get(url, \[data\], \[callback\], \[type\]) 后面三个是可选的可以没有](#1).get(url, [data], [callback], [type]) 后面三个是可选的可以没有)

[2).post(url, \[data\], \[callback\], \[type\])](#2).post(url, [data], [callback], [type]))

[3).ajax( { option1:value1,option2:value2... } ); 语法:.ajax({键值对});](#3).ajax( { option1:value1,option2:value2... } ); 语法:.ajax({键值对});)

7、JSON数据和Java对象的相互转换


1、什么是Ajax?

Ajax: asynchronous javascript and xml (异步js和xml)是可以与服务器进行同步或异步交互的技术之一,它的语言载体是JavaScript。

2、为什么说Ajax的语言载体是JavaScript?

因为Ajax的核心是使用JavaScript来发送和接收数据。然而,Ajax本身并不是一种编程语言,而是一种使用JavaScript实现的网络通信技术。它允许网页在不中断用户操作的情况下,与服务器进行数据交互,从而提高用户体验。

3、Ajax的特点

Ajax最大的特点就是异步请求,不刷新整个页面,只刷新局部也叫局部刷新。

4、什么是异步请求?

(1)什么是同步:

同步就是我告诉你要干什么之后就啥也不干,等着你干完我再去干别的。

(2)什么是异步:

异步就是我告诉你要干什么之后就去干我自己的事情,等你干完了之后再告诉我就行,采用异步请求可以很好的提升用户体验。

专业一点的说法是:

  1. 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待卡死状态。
  2. 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死。

5、Ajax的运行原理

页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到服务器端,在这段时间里,客户端可以任意进行任意操作,直到服务器端将数据返回给Ajax引擎后,会触发你设置的事件,从而执行自定义的js逻辑代码完成某种页面功能。

6、JQuery的Ajax技术

JQuery是一个优秀的js框架,自然对JS原生的Ajax进行了封装,封装后的Ajax的操作方法更简洁,功能更强大,与ajax操作相关的jquery方法有很多种,但开发中经常使用的有三种:

1)$.get(url, [data], [callback], [type]) 后面三个是可选的可以没有

//发送get请求

这里如果有callback(回调函数),但是没有type(回调函数返回值)的话,系统默认返回text、类型的数据。

javascript 复制代码
    // 1)$.get(url, [data], [callback], [type])  后面三个是可选的可以没有
    function ajaxGet() {
      $.get(
              "/ajax1",
              {"name":"张三get"},
              function (jsonObj) {
                console.log(jsonObj);
              },
              "json"
      )
    }

2)$.post(url, [data], [callback], [type])

//发送post请求

其中:

  • url:代表请求的服务器端地址
  • data:代表请求需要传给服务器端的数据(可以是key=value形式也可以是json格式)
  • callback:表示服务器端成功响应所触发的函数
  • type:表示服务器端返回的数据类型(jquery会根据指定的类型自动进行类型转换,不写默认是text)
  • 常用的返回类型:text、json、html等
javascript 复制代码
    // 2)$.post(url, [data], [callback], [type])  后面三个是可选的可以没有
    function ajaxPost() {
      $.post(
              "/ajax1",
              {"name":"张三post"},
              function (jsonObj) { //jsonObj是函数的返回值
                console.log(jsonObj);
              },
              "json"
      )
    }

3).ajax( { option1:value1,option2:value2... } ); 语法:.ajax({键值对});

//既可以发送get请求又可以发送post请求

常用的option有如下:

  • async:是否异步,默认是true代表异步。(get/post方式只能异步,不能配置)
  • data:发送到服务器的参数,建议使用json格式
  • dataType:服务器端返回的数据类型,常用text和json
  • success:成功响应执行的函数,对应的类型是function类型
  • type:请求方式,POST/GET
  • url:请求服务器端地址
javascript 复制代码
    // 3)$.ajax( { option1:value1,option2:value2... } );    语法:$.ajax({键值对}); 传递的是js的对象(key不加引号)
    function ajax() {
      $.ajax({
        async: false, //不写默认是true,表示发的是异步请求,如果是false则发同步请求
        url: "/ajax1", //请求要发送到的地址
        type: "POST",  //当前请求的发送方式,为POST时表示发送POST请求,servlet调用doPost方法
        data: {"name":"张三ajax"}, //发送的数据
        success: function (jsonObj) { //回调函数,接收请求的一方执行完请求后会调用这个函数,jsonObj是函数的返回值
          console.log(jsonObj);
          },
        dateType: "json"
      })
    }

7、JSON数据和Java对象的相互转换

  1. 导入jackson的相关jar包
  2. 创建Jackson核心对象 ObjectMapper
  3. 调用ObjectMapper的相关方法进行转换:
  • JSON转为Java对象:readValue(json字符串数据,Class)
  • Java对象转换JSON:writeValueAsString(obj):将对象转为json字符串

定义一个Person类

java 复制代码
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;

import java.util.Date;

public class Person {
    private Integer id;
    /*给属性添加这个注解表示把Person对象转化为json字符串的时候忽略该属性*/
    @JsonIgnore
    private Integer age;
    private String name;
    private String gender;
    @JsonFormat(pattern = "yyyy-MM-dd") //把对象转化为json数据时日期格式为:年-月-日
    private Date birthday;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                ", birthday=" + birthday +
                '}';
    }
}
java 复制代码
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.situ.web.pojo.Person;
import org.junit.Test;

import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JacksonTest {
    //Java对象转换为JSON字符串
    @Test
    public void  test1() throws JsonProcessingException {
        //1.创建Person对象
        Person person = new Person();
        person.setId(1);
        person.setName("张三");
        person.setAge(23);
        person.setGender("男");
        person.setBirthday(new Date());
        //2.创建Jackson核心对象 ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(person);
        //{"id":1,"name":"张三","age":23,"gender":"男","birthday":1723701577443}
        System.out.println(json);
    }

    //JSON字符串转换为Java对象
    @Test
    public void  test3() throws IOException {
        //创建json字符串
        String json = "{\"id\":1,\"name\":\"张三\",\"age\":23,\"gender\":\"男            \",\"birthday\":1723701577443}";
        //创建Jackson核心对象
        ObjectMapper mapper = new ObjectMapper();
        //将json字符串转换为Java对象
        Person person = mapper.readValue(json, Person.class);
        System.out.println(person);
    }

}
  1. 复杂java对象转换
  • List:数组 []
  • Map:对象格式一致 {}
java 复制代码
    @Test
    public void test2() throws JsonProcessingException {
        //1.创建Person对象
        //用map可以模拟出对象的效果
        Map<String, Object> map = new HashMap<>();
        map.put("name", "张三");
        map.put("age",24);
        map.put("gender", "男");
        //2.创建Jackson核心对象 ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(map);
        //{"gender":"男","name":"张三","age":24}
        System.out.println(json);
    }
相关推荐
哆啦A梦15881 分钟前
商城后台管理系统 03 登录布局
javascript·vue.js·elementui
毕设源码-赖学姐2 分钟前
【开题答辩全过程】以 高校教学质量监控平台为例,包含答辩的问题和答案
java·eclipse
高山上有一只小老虎9 分钟前
翻之矩阵中的行
java·算法
火钳游侠23 分钟前
java单行注释,多行注释,文档注释
java·开发语言
曼巴UE526 分钟前
UE FString, FName ,FText 三者转换,再次学习,官方文档理解
服务器·前端·javascript
code bean1 小时前
【CMake】为什么需要清理 CMake 缓存文件?深入理解 CMake 生成器切换机制
java·spring·缓存
selt7911 小时前
Redisson之RedissonLock源码完全解析
android·java·javascript
RestCloud1 小时前
智能制造的底层基建:iPaaS 如何统一 ERP、MES 与 WMS 的数据流
java·wms·erp·数据传输·ipaas·mes·集成平台
夕颜1111 小时前
BeeAI 框架学习记录
后端
行走的陀螺仪1 小时前
高级前端 Input 公共组件设计方案(Vue3 + TypeScript)
前端·javascript·typescript·vue·组件设计方案