JavaWeb系列二十一: 数据交换和异步请求(JSON, Ajax)

news2024/9/23 15:32:24

文章目录

  • 官方文档
  • official documents
  • 官方文件
  • 官方文件
  • official documents
  • JSON介绍
  • JSON快速入门
  • JSON对象和字符串对象转换
    • 应用案例
    • 注意事项和细节
  • JSON在java中使用
    • 说明
    • JSON在Java中应用场景
    • 应用实例
  • Ajax基本介绍
    • Ajax是什么
    • Ajax经典应用场景
  • Ajax原理示意图
    • 传统的web应用
    • Ajax原理示意图
  • JavaScript 原生 Ajax 请求
    • Ajax文档
    • 应用实例-验证用户名是否存在
    • 2.6 接入数据库
  • 3.jQuery操作Ajax
    • 3.1 jQuery操作Ajax文档
    • 3.2 jQuery.ajax()函数
    • 3.3 $.get 和 $.post常用参数
    • 3.4 jQuery.ajax()快速入门
    • 3.4 jQuery.get()快速入门
    • 3.5 jQuery.post()快速入门
    • 3.6 jQuery.getJSON快速入门
    • 3.7 接入数据库

在这里插入图片描述

@ [ toc ]

@ [ toc ]

@ [ toc ]

@ [ toc ]

@ [ toc ]

@ [ toc ]

@ [ toc ]

@ [ toc ]

@ [ toc ]

@ [ toc ]

@ [ toc ]

@ [ toc ]

@ [ toc ]

@ [ toc ]

@ [ toc ]

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

! (在这里插入图片描述)( https://img-blog.csdnimg.cn/bc597b332d0847d5b8f2169bb4f9cc99.jpeg#pic_center )

官方文档

official documents

官方文件

官方文件

official documents

Json在线文档: https://www.w3school.com.cn/jquery/index.asp

“ Json”在线文档: 【 https://www.w3school.com.cn/jquery/index.asp 】( https://www.w3school.com.cn/jquery/index.asp )

“ Json”在线文档: 【 https://www.w3school.com.cn/jquery/index.asp 】( https://www.w3school.com.cn/jquery/index.asp )

“ Json”在线文档: 【 https://www.w3school.com.cn/jquery/index.asp 】( https://www.w3school.com.cn/jquery/index.asp )

Ajax在线文档: https://www.w3school.com.cn/js/js_ajax_intro.asp

“ Ajax”在线文档: 【 https://www.w3school.com.cn/js/js_ajax_intro.asp 】( https://www.w3school.com.cn/js/js_ajax_intro.asp )

“ Ajax”在线文档: 【 https://www.w3school.com.cn/js/js_ajax_intro.asp 】( https://www.w3school.com.cn/js/js_ajax_intro.asp )

离线文档: W3School离线手册(2017.03.11版)

离线文档: W3学校离线手册(2017.03.11版)

Offline document: W3 School Offline Handbook (version 3.11,2017.03)

在这里插入图片描述

! insert picture description here

JSON介绍

1.JSON 指的是JavaScript对象表示法(JavaScript Object Notation)

2.JSON是轻量级的文本数据交换格式

在这里插入图片描述

3.JSON独立于语言[即java, php, asp.net, go等都可以使用JSON]

4.JSON具有自我描述性, 更易理解. 一句话, 非常的好用.

JSON快速入门

1.JSON的定义格式

var 变量名 = {
	 "k1" : value, //Number类型
	 "k2" : "value", //字符串类型
	 "k3" : [], // 数组类型
	 "k4" : {}, //json对象类型
	 "k5" : [{},{}] //json数组
};
var myJson = {
	"key1":"赵志伟", //字符串
	"key2":23, //Number
	"key3":[1,"hello",3.2], //数组
	"key4":{"age":23, "name":"赵志伟"}, //json对象
	"key5":[{"亚丝娜":"我的老婆", "桐谷和人":"我"},{"k1":23, "k2":"zzw"}]
}; 

2.JSON规则解读
1)映射(元素/属性)用冒号 : 表示, “名称”:值, 注意名称是字符串, 因此要用双引号引起来.

2)并列的数据之间用逗号分隔. “名称1”:值, “名称2”:值

3)映射的集合(对象)用大括号 {} 表示. {“名称1”:值, “名称2”:值}

4)并列数据的集合(数组)用方括号 [] 表示. [{“名称1”:值,“名称2”:值},{“名称1”:值,“名称2”:值}]

5)元素值类型: string, number, object, array, true, false, null

3.JSON快速入门案例

1)创建javaweb项目 zzw_json_ajax 参考 IDEA 2022.3开发JavaWeb工程

在这里插入图片描述

2)第三方的包 gson.jar.

3)创建json_quick_start.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>json 快速入门案例</title>
    <script type="text/javascript">
        /*
          1.myJson就是一个json对象
          2.演示如何获取到json对象的属性/key
        */
        var myJson = {
            "key1": "赵志伟",//字符串
            "key2": 123,//Number
            "key3": [1, "hello", 2.3],//数组
            "key4": {"age": 12, "name": "jack"},//json对象
            "key5": [//json数组
                {"k1": 10, "k2": "apple"},
                {"k3": 30, "k4": "john"}
            ]
        };
        //1.取出key1
        console.log("key1 = " + myJson.key1);
        console.log("key1 = " + myJson['key1']);//这样也可以
        //2.取出key3
        console.log("key3 = " + myJson.key3)
        //  可以对key3取出的值(Array)进行遍历
        for (var i = 0; i < myJson.key3.length; i++) {
            //使用模板字符串
            console.log(`${i}个元素的值是 ${myJson.key3[i]}`);
        }
        //3.取出key4
        console.log("key4 = ", myJson.key4, "key4.name = " + myJson.key4.name);
        //4.取出key5
        console.log("key5 = ", myJson.key5, "k4 = " + myJson.key5[1].k4)
    </script>
</head>
<body>
</body>
</html>

JSON对象和字符串对象转换

应用案例

1.JSON.stringify(json)功能: 将一个json对象转换为json字符串

2.JSON.parse(jsonString)功能: 将一个json字符串转化为json对象

3.应用实例. 创建json_str.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JSON 对象和字符串对象转换</title>
  <script type="text/javascript">
    //一个 json 对象
    var jsonObj = {"name": "张三","age": 18,"sex": "男"};
    
    //JSON 是一个build-in对象, 内建对象, 有方法可以使用
    console.log(JSON)

    //把 json 对象转换成字符串对象
    var jsonStr = JSON.stringify(jsonObj);
    console.log(jsonStr);

    //把 json 对象的字符串, 转换成 json 对象
    var jsonObj2 = JSON.parse(jsonStr);
    console.log(jsonObj2);
  </script>
</head>
<body>
</body>
</html>

注意事项和细节

1.JSON.stringify(json对象)会返回json对象对应的String, 并不会影响原来的json对象.

2.JSON.parse(String)函数会返回对应的json的对象, 并不会影响原来的String.

3.在定义json对象时, 可以使用单引号''表示字符串.

 //比如
 var personJson = {"name": "赵志伟","age": 23};
 //也可以写成
 var personJson = {'name': '赵志伟','age': 23};

4.但是在把原生字符串转成json对象时, 必须使用双引号"", 否则会报错, 比如

var dogStr = "{'name':'喵喵', 'age':1}";//转 json 会报错

5.JSON.stringify(json对象)返回的字符串, 都是双引号""括起来的字符串, 所以在语法格式正确的情况下, 是可以重新转成json对象的.

JSON在java中使用

说明

1.在java中使用json, 需要引入到第三方的包 gson.jar.

2.GsonGoogle提供的用来在Java对象和JSON数据之间进行映射的Java类库.

3.可以对JSON字符串和Java对象相互转换.

JSON在Java中应用场景

1.Javabean对象和json字符串的转换.

2.List对象和json字符串的转换.

3.map对象和json字符串的转换.

4.应用场景示意图

在这里插入图片描述

应用实例

需求: 演示jsonjava程序的使用.

1.引入gson.jar包.

2.新建src/com/zzw/json/Book.java

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {
    private Integer id;
    private String name;
}

3.新建src/com/zzw/json/JavaJson.java

public class JavaJson {
    public static void main(String[] args) {
        //引入gson包, 创建一个gson对象, 作为一个工具使用
        Gson gson = new Gson();

        //一. 演示 java对象 和 json的转换
        System.out.println("\n=== 1. java 对象和 json 的转换 ====");
        Book book = new Book(100, "java编程思想");
        //1.把 java对象 转成 json字符串
        String bookStr = gson.toJson(book);
        System.out.println("bookStr = " + bookStr);
        //2.把 json字符串 转成 java对象
        //解读: bookStr就是json字符串, Book.class指定将json字符串转成Book对象
        //底层是反射机制
        Book book2 = gson.fromJson(bookStr, Book.class);
        System.out.println("book2 = " + book2);

        //二. 演示 List集合 和 json的转换
        System.out.println("\n======2. List 集合和 json 的转换======");
        List<Book> bookList = new ArrayList<>();
        bookList.add(new Book(200, "python编程思想"));
        bookList.add(new Book(300, "C++编程思想"));
        //1.把 list集合 转成 json字符串
        //解读: 因为把一个 对象/集合 转成字符串, 相对比较简单
        //底层只需要遍历, 获取对象的属性, 按照json格式拼接返回即可
        String bookListStr = gson.toJson(bookList);
        System.out.println("bookListStr = " + bookListStr);
        //2.把 json字符串 转成 list集合
        /**
         * 解读
         * (1)如果需要把 json字符串 转成 集合 这样复杂的类型, 需要使用gson提供的一个类
         * (2)TypeToken, 是一个自定义泛型类, 然后通过TypeToken来指定我们需要转换成的类型
         * public class TypeToken<T> {
         *     final Class<? super T> rawType;
         *     final Type type;
         *     final int hashCode;
         *     protected TypeToken() {
         *         this.type = getSuperclassTypeParameter(this.getClass());
         *         this.rawType = Types.getRawType(this.type);
         *         this.hashCode = this.type.hashCode();
         *     }
         * }
         * (3)返回的是类型的完整路径: java.util.List<com.zzw.json.Book>
         * (4)gson的设计者, 需要得到类型的完整路径, 然后在底层进行反射
         * (5)所以gson设计者就提供了TypeToken来搞定.
         *
         *
         * 二说TypeToken [为什么要添加{}, 涉及到内部类..]
         * (1)如果我们这样写 new TypeToken<List<Book>>().getType();
         * 会提示: 'TypeToken()' has protected access in 'com.google.gson.reflect.TypeToken
         * (2)因为TypeToken的无参构造方法, 是一个protected的
         *    , 所以不能直接new, 而new TypeToken<List<Book>>()就是调用其无参构造方法
         * (3)根据java基础, 如果一个方法是protected, 而且不在同一个包, 是不能直接访问的, 所以报错
         * (4)为什么 new TypeToken<List<Book>>() {}.getType() 这样使用就可以, 这涉及到匿名内部类的使用
         * (5)当new TypeToken<List<Book>>() {}这样使用, 返回类型就不再是TypeToken, 而是匿名内部类[可以看作是TypeToken的子类]
         * (6)而且这个匿名内部类是有自己的无参构造器的(隐式), 根据java基础, 当执行子类无参构造器时, 默认先执行super();
         *
         * 三说TypeToken [对java基础回顾]
         * class JabaBean$1 extends com.google.gson.reflect.TypeToken<List<Book>> {
         *      public JabaBean$1() {
         *          super();
         *      }
         * }
         * TypeToken<List<Book>> typeToken = new JabaBean$1();
         * typeToken.getType();
         */
        TypeToken<List<Book>> typeToken = new TypeToken<List<Book>>() {};
        System.out.println("typeToken = " + typeToken.getClass());//typeToken = class com.zzw.json.JavaJson$1
        List<Book> bookList2 = gson.fromJson(bookListStr, typeToken.getType());
        System.out.println("bookList2 = " + bookList2);

        //三. 演示 Map集合 和 json的转换
        System.out.println("\n======3. Map 集合和 json 的转换======");
        Map<String, Book> bookHashMap = new HashMap<>();
        bookHashMap.put("no1", new Book(400, "JavaScript编程思想"));
        bookHashMap.put("no2", new Book(500, "Go编程思想"));
        //(1)把 map集合 转成 json字符串
        String bookMapStr = gson.toJson(bookHashMap);
        System.out.println("bookMapStr = " + bookMapStr);
        //(2)把 json字符串 转成 map集合
        Type type = new TypeToken<Map<String, Book>>() {}.getType();
        Map<String, Book> bookHashMap2 = gson.fromJson(bookMapStr, type);
        System.out.println("bookHashMap2 = " + bookHashMap2);
    }
}

测试.

Ajax基本介绍

Ajax是什么

1.AJAXAsynchronous Javascript And XML(异步 JavaScriptXML)

2.AJAX是一种浏览器异步发起请求(可以指定发送哪些数据), 局部更新页面的技术

Ajax经典应用场景

1.搜索引擎根据用户输入的关键字, 自动提示检索关键字

2.动态加载数据, 按需取得数据 [树形菜单, 联动菜单…]

3.改善用户体验 [输入内容前提示, 带进度条文件上传…]

4.电子商务应用 [购物车, 邮件订阅…]

5.访问第三方服务 [访问搜索服务, rss阅读器]

6.页面局部刷新 https://piaofang.maoyan.com/dashboard

Ajax原理示意图

传统的web应用

●一图胜千言
在这里插入图片描述

Ajax原理示意图

在这里插入图片描述

JavaScript 原生 Ajax 请求

Ajax文档

在线文档: https://www.w3school.com.cn/js/js_ajax_intro.asp

离线文档: W3School离线手册(2017.03.11版)

应用实例-验证用户名是否存在

●需求
演示 javascript 发送原生 ajax 请求的案例.

●思路分析
1.在输入框输入用户名
2.点击验证用户名, 使用 ajax 方式, 服务端验证该用户名是否已经被占用了, 如果该用户已经被占用, 以 json 格式返回该用户信息.
3.假定用户名为 king 就不可用, 其他用户名可以.
4.对页面进行局部刷新, 显示返回信息.
5.小思考: 为什么直接返回用户名是否可用的信息. 完成案例,再思考.

在这里插入图片描述

简单地思路分析: 程序框架图 => 先思考 -> 走代码

在这里插入图片描述

●代码实现

1.引入servlet-api.jar包

2.创建src/com/zzw/json/User.java

public class User {
    private String name;
    private String pwd;

	//getter, setter, toString, 全参构造方法
}

3.创建src/com/zzw/ajax/CheckUserServlet.java

public class CheckUserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");

        System.out.println("ajax 请求 username=" + username);

        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer = response.getWriter();

        //假定 king 这个用户名已经被占用,其它可以使用
        //占用的话, 我们就返回 king 这个用户对应的 json字符串
        if ("king".equals(username)) {
            User user = new User("king", "123");
            writer.print(new Gson().toJson(user));
        } else {
            writer.print("未被占用");
        }
        writer.flush();
        writer.close();
    }
}

配置web.xml

<servlet>
    <servlet-name>CheckUserServlet</servlet-name>
    <servlet-class>com.zzw.ajax.CheckUserServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>CheckUserServlet</servlet-name>
    <url-pattern>/checkUser</url-pattern>
</servlet-mapping>

4.创建web/login.html


2.发送ajax请求[http请求]
在这里插入图片描述
3.后台接收并返回json格式的数据
在这里插入图片描述
4.前端得到数据, 通过dom操作, 进行页面局部刷新
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.测试
在这里插入图片描述
在这里插入图片描述

2.6 接入数据库

引入数据库进行验证

项目结构 粘贴自满汉楼项目
在这里插入图片描述
1.思维框架图
在这里插入图片描述
在这里插入图片描述
2.User实体类-无参构造器
在这里插入图片描述
3.UserDAO
在这里插入图片描述
4.UserService
在这里插入图片描述
5.CheckUserServlet
在这里插入图片描述
在这里插入图片描述
6.发现错误
在这里插入图片描述
解决方案
src是se方式下的路径, javaweb要用到类加载器
在这里插入图片描述
7.测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.jQuery操作Ajax

1.编写原生的Ajax要写很多的代码, 要考虑浏览器兼容的问题
2.在实际工作中, 一般使用JavaScript的库(比如Jquery)发送Ajax请求

3.1 jQuery操作Ajax文档

1.在线文档
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.离线文档在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 jQuery.ajax()函数

1.$.ajax常用函数

$.ajax常用函数的位置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • url: 请求的地址
    在这里插入图片描述
  • type: 请求的方式get或post
    在这里插入图片描述
  • data: 发送到服务器的数据, 将自动转换为请求字符串格式
    在这里插入图片描述
  • success: 成功的回调函数
    在这里插入图片描述
  • error: 失败的回调函数
    在这里插入图片描述
  • dataType: 返回的数据类型 常用json和text
    在这里插入图片描述

3.3 $.get 和 $.post常用参数

  • url: 请求的URL地址
  • data: 请求发送到服务器的数据
  • success: 成功时回调函数
  • type: 返回内容格式, xml.html.script.json.text

说明: $.get和$.post底层还是使用$.ajax()方法来实现异步请求
在这里插入图片描述
在这里插入图片描述

3.4 jQuery.ajax()快速入门

1.在web路径/scrpit下引入jquery后, Rebuild Project一下
在这里插入图片描述
2.发送ajax请求[http请求]
在这里插入图片描述
3.后台接收并返回json格式的数据
在这里插入图片描述
4.测试
回显乱码
在这里插入图片描述
解决方案
在这里插入图片描述
在这里插入图片描述

1.后台接收并返回数据
在这里插入图片描述
2.前端获取
在这里插入图片描述
在这里插入图片描述
3.前端判断
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述
4.在div中显示内容
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述

3.4 jQuery.get()快速入门

1.$.get()默认是get请求, 不需要再指定请求方式
2.不需要指定参数名
3.填写的实参, 是顺序的: url—data—success回调函数—dataType
4.没有提供error接口, 可以在success回调函数里根据status判断

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

3.5 jQuery.post()快速入门

操作: 只需把$.get改成$.post

$.post和$.get的方式一样, 只是这时, 是按照post方法发送ajax请求[本质是http请求]

1.$.post()默认是post请求, 不需要再指定请求方式
2.不需要指定参数名
3.填写的实参, 是顺序的: url—data—success回调函数—dataType
4.没有提供error接口, 可以在success回调函数里根据status判断

$.post(
    "/ajax/checkUserServlet2",
    {
        username: $("#username").val(),
        date: new Date() //built-in
    },
    function (data, status, xhr) {//成功后的回调函数
        console.log("$.post()请求成功");
        console.log("data=", data);
        console.log("status=", status);
        console.log("xhr=", xhr);
        //data是json对象,如果要显示-转成字符串
        $("#div").html(JSON.stringify(data));
        //对返回的结果进行处理
        if ("" == data.name) {
            $("#message").val("该用户名可用");
        } else {
            $("#message").val("该用户名不可用");
        }
    },
    "json"
)

在这里插入图片描述
在这里插入图片描述

3.6 jQuery.getJSON快速入门

四种格式

     var usernameValue = $(this).val();
     $.getJSON(
         //这里尽量准确, 一把确定[复制粘贴]
         "memberServlet", "action=isExistByName&username=" + usernameValue, function (data) {
             alert(data.isExist);
             console.log("data= ", data);//显示json格式的数据: 1.要用逗号; 2.要用console.log()
         }
/*========================================================================================*/
         "memberServlet?action=isExistByName&username=" + usernameValue, function (data) {
             alert(data.isExist);
             console.log("data= ", data);//显示json格式的数据: 1.要用逗号; 2.要用console.log()
         }
/*========================================================================================*/
         "memberServlet",
         {
             action: "isExistByName",
             username: usernameValue
         },
         function (data) {
             alert(data.isExist);
             console.log("data= ", data);//显示json格式的数据: 1.要用逗号; 2.要用console.log()
         }
/*========================================================================================*/
         "memberServlet",
         {
             "action": "isExistByName",
             "username": usernameValue
         },
         function (data) {
             alert(data.isExist);
             console.log("data= ", data);//显示json格式的数据: 1.要用逗号; 2.要用console.log()
         }
     )

$.getJSON常用参数

  • url:请求发送的URL
  • data: 请求发送到服务器的数据
  • success: 请求成功时的回调函数
$.getJSON(
   "/ajax/checkUserServlet2",
   {
       username: $("#username").val(),
       date: new Date() //built-in
   },
   function (data, status, xhr) {//成功后的回调函数
       console.log("$.getJSON()请求成功");
       console.log("data=", data);
       console.log("status=", status);
       console.log("xhr=", xhr);
       //data是json对象,如果要显示->转成字符串
       $("#div").html(JSON.stringify(data));
       //对返回的结果进行处理
       if ("" == data.name) {
           $("#message").val("该用户名可用");
       } else {
           $("#message").val("该用户名不可用");
       }
   },
);

如果你通过jQuery发送的ajax请求[本质是http请求]是get请求, 并且返回的数据格式是JSON, 可以直接使用$.getJSON(). 简洁.
在这里插入图片描述
在这里插入图片描述

3.7 接入数据库

1.接入数据库在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.前端测试 在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1921177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用微客云搭建一套外卖霸王餐系统赚CPS佣金

在当下数字化快速发展的时代&#xff0c;外卖行业作为餐饮业的重要分支&#xff0c;正在经历着前所未有的变革。为了满足市场需求&#xff0c;提高用户体验和增加商户收入&#xff0c;越来越多的外卖平台开始寻求创新&#xff0c;其中&#xff0c;搭建一套高效、稳定且功能丰富…

昇思25天学习打卡营第19天|CycleGAN图像风格迁移互换

CycleGAN图像风格迁移互换 模型介绍 模型简介 CycleGAN(Cycle Generative Adversarial Network) 即循环对抗生成网络&#xff0c;来自论文 Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 。该模型实现了一种在没有配对示例的情况下学习将…

jenkins打包java项目报错Error: Unable to access jarfile tlm-admin.jar

jenkins打包boot项目 自动重启脚本失败 查看了一下项目日志报错&#xff1a; Error: Unable to access jarfile tlm-admin.jar我检查了一下这个配置&#xff0c;感觉没有问题&#xff0c;包可以正常打&#xff0c; cd 到项目目录下面&#xff0c;手动执行这个sh脚本也是能正常…

本地Kali系统开启SSH服务并使用内网穿透生成公网地址实现ssh远程连接

文章目录 前言1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 本文主要介绍如何在本地Kali Linux系统启动ssh服务&#xff0c;并结合cpolar内网穿透软件生成公网地址&#xff0c;轻松…

提示词工程(Prompt Engineering)是什么?

一、定义 Prompt Engineering 提示词工程&#xff08;Prompt Engineering&#xff09;是一项通过优化提示词&#xff08;Prompt&#xff09;和生成策略&#xff0c;从而获得更好的模型返回结果的工程技术。 二、System message 系统指令 System message可以被广泛应用在&am…

平凯星辰黄东旭出席 2024 全球数字经济大会 · 开放原子开源数据库生态论坛

7 月 5 日&#xff0c;以“开源生态筑基础&#xff0c;数字经济铸未来”为主题的 2024 全球数字经济大会——开放原子开源数据库生态论坛在北京成功举办。平凯星辰&#xff08;北京&#xff09;科技有限公司联合创始人黄东旭发表了题为《TiDB 助力金融行业关键业务系统实践》的…

【TS】typescript 获取函数入参类型、返回值类型、promise返回值类型

文章目录 1. 准备工作2. 获取函数入参的类型3. 获取函数返回值类型4. 获取promise返回值类型 1. 准备工作 创建 utils.ts interface User {id: number;name: string;age: number; } interface Params {method: string;url: string; }function getUserList(params: Params,other…

RocketMQ 消费者之顺序消费和流程详解附源码解析

1. 背景 本文是 RocketMQ 消费者系列的第六篇&#xff0c;上一篇主要介绍并发消费&#xff0c;而本片主要介绍 RocketMQ 顺序消费的设计和流程。 我把 RocketMQ 消费分成如下几个步骤 重平衡 消费者拉取消息 Broker 接收拉取请求后从存储中查询消息并返回 消费者消费消息 顺序…

算法学习day10(贪心算法)

贪心算法&#xff1a;由局部最优->全局最优 贪心算法一般分为如下四步&#xff1a; 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 一、摆动序列&#xff08;理解难&#xff09; 连续数字之间的差有正负的交替&…

GO channel 学习

引言 单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。 虽然可以使用共享内存进行数据交换&#xff0c;但是共享内存在不同的goroutine中容易发生竞态问题。为了保证数据交换的正确性&#xff0c;必须使用互斥量对内存进行加锁&#…

视频语音转文字工具用哪个好?推荐6款优质的视频转文字工具

在沉浸于电影情节时&#xff0c;周遭的喧嚣往往成了享受视听的障碍&#xff0c;这时&#xff0c;字幕的重要性便不言而喻。 字幕的作用远不止于此&#xff0c;它是听力受限观众的桥梁&#xff0c;也是语言学习者的得力助手。幸运的是&#xff0c;将视频语音转文字字幕现已变得…

红酒与未来科技:传统与创新的碰撞

在岁月的长河中&#xff0c;红酒以其深邃的色泽、丰富的口感和不同的文化魅力&#xff0c;成为人类文明中的一颗璀璨明珠。而未来科技&#xff0c;则以其迅猛的发展速度和无限的可能性&#xff0c;领着人类走向一个崭新的时代。当红酒与未来科技相遇&#xff0c;一场传统与创新…

电脑自动重启是什么原因呢?99%人都不知道的解决办法,直接打破循环

当你的电脑突然毫无预警地自动重启&#xff0c;不仅打断了工作流程&#xff0c;还可能导致未保存的数据丢失&#xff0c;这无疑是一件令人沮丧的事情。那么&#xff0c;电脑自动重启是什么原因呢&#xff1f;有什么方法可以解决呢&#xff1f;别担心&#xff0c;在大多数情况下…

对象与键值对数组的相互转换Object.entries与Object.fromEntries

Object.entries是JavaScript中的一个内置方法&#xff0c;它可以将一个对象的属性和值转换为一个包含键值对的数组。 let obj {name: mike,age: 18,sex: man } Object.entries(obj)Object.entries的使用场景: 1、动态更新对象属性 let obj {name: mike, age: 18, sex: man…

《昇思25天学习打卡营第02天|qingyun201003》

日期 心得 通过这次的学习&#xff0c;主要是了解过张量的基础概念&#xff0c;同时也知道有关构造张量的方法。通过索引查询张量&#xff0c;张量的运算。通过concat\stack 将张量进行维度链接。Tensor与NumPy的互相转换&#xff0c;但是我似乎并不了解什么它们的概念。也认知…

电脑视频去水印软件哪个好用,电脑上视频去水印的软件

在数字化时代&#xff0c;视频创作已成为许多人展示才华和创意的重要途径。然而&#xff0c;视频中的水印常常让人感到头疼&#xff0c;尤其是当水印影响了视频的整体美观时。本文将为你揭秘如何在电脑上使用各种软件去除视频水印&#xff0c;让你的作品更加专业&#xff01; 方…

时光穿梭机:AI如何让老照片焕发新生,跃然“动”起来

在岁月的长河中&#xff0c;每一张老照片都是时间的低语&#xff0c;承载着过往的记忆与温情。它们静静地躺在相册的角落&#xff0c;或是泛黄的相纸上&#xff0c;定格了某个瞬间的欢笑与泪水&#xff0c;却也因此失去了那份生动的活力。然而&#xff0c;随着人工智能&#xf…

如何做一个迟钝不受伤的打工人?

一、背景 在当前激烈的职场环境中&#xff0c;想要成为一个相对“迟钝”且不易受伤的打工人&#xff0c;以下是一些建议&#xff0c;但请注意&#xff0c;这里的“迟钝”并非指智力上的迟钝&#xff0c;而是指在应对复杂人际关系和压力时展现出的豁达与钝感力&#xff1a; 尊重…

如何在Linux系统安装openGauss数据库并使用固定公网地址远程连接

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 本文主要介绍如何在Linux系统如何安装openGauss数据库管理系统&#xff0c;并结合cpolar内网穿透工具生成…

docker基础知识以及windows上的docker desktop 安装

记录以供备忘 基础概念&#xff1a; 什么是docker 将程序和环境一起打包&#xff0c;以在不同操作系统上运行的工具软件 什么是基础镜像 选一个基础操作系统和语言后&#xff0c;将对应的文件系统、依赖库、配置等打包为一个类似压缩包的文件&#xff0c;就是基础镜像 什么是…