首页 > 其他分享 >2022-09-01 第四组 王佳齐 学习笔记

2022-09-01 第四组 王佳齐 学习笔记

时间:2022-09-01 18:44:56浏览次数:55  
标签:username 01 王佳齐 xhr ajax 第四组 data post 请求

ajax概念

ajax:异步刷新,前端技术,给后台发请求

异步:整个页面不会全部刷新只有某个局部在刷新。

四种发请求的方式:

1.form表单

2.a标签

3.地址栏

4.location.href.window.open

注意:

一、使用ajax发送请求,页面是不可以通过后台跳转的。如果需要跳转页面也是通过前端的JS来跳转,不可能是通过Servlet跳转二、ajax和form表单一定不能同时使用ajax:不跳页面form:一定要跳走两者相互冲突

 

请求体:post才有请求体

 

ajax发起请求给后台,后台的响应会回到ajax的响应处理函数中

readyState:

0:-----------xhr被创建成功,open方法未调用

1:-----------open被调用,未建立连接

2:-----------send被调用,可以获取状态行和响应头

3:-----------可以拿到响应体,响应体加载中

4:-----------响应体加载成功,可以直接使用resposeText

代表请求可以正常发送,响应可以正常接收


js中的ajax

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p>
        账号:<input type="text" onblur="valid()" id="username" name="username"><span id="span"></span>
    </p>
<script>
    function valid(){
        let username = document.getElementById("username").value;
        let span = document.getElementById("span");
        //向后台发送请求
        //使用ajax
        //XMLHttpRequest是ajax的支持对象
        let xhr = new XMLHttpRequest();
        //设置请求方式和地址
        //传参
        xhr.open("GET","valid.do?username="+username);
        //发地址
        xhr.send(null);
        //post请求传参
        /**
         * //发送post请求
         * xhr.open("POST","valid.do");
         * //设置请求头信息
         * //Content-type:选择内容类型
         * xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
         * //传参
         * xhr.send("username="+username);*/




        //指定xhr的状态变化的处理函数
        xhr.onreadystatechange = function (){
            //正常接收后台响应
            if (this.readyState === 4){
                //通过xhr的responseText获取对应的响应体
                switch (this.responseText){
                    case "1":
                        span.innerText="账号验证成功!";
                        break;
                    case "0":
                        span.innerText = "账号输入错误!"
                }


            }
        }
    }
</script>
</body>
</html>

 

JQuery中的ajax

共有三种发送请求的方式

一、发送get请求

//1.发送get请求
            $.get("valid.do?username=" + username,function(data) {
                // data就是后台回来的响应体
                console.log(data);
                if(data == "1") {
                    $("#msg").html("用户名可用...")
                }
                if(data == "0") {
                    $("#msg").html("用户名已存在...")
                }
            });

 

二、发送post请求

//2.发送post请求
            $.post("valid.do","username=" + username,function (data) {
                if(data == "1") {
                    $("#msg").html("用户名可用...")
                }
                if(data == "0") {
                    $("#msg").html("用户名已存在...")
                }
            });

 

三、完整写法,JQuery中的ajax

$.ajax({
                url: "valid.do",
                type: "post",
                data: formData,
                success : function(res) {
                    console.log(res);
                },
                error : function(res) {
                    console.log(res);
                }
            });

 

注意:这里的formData需要在jquery-3.0.0.min.js版本中才好使

 

formData: formData构建一个表单数据对象

formData是JS的内置对象,和JQuery无关,和Vue无关

firmData使用方法:

             let formData = new FormData();
            formData.append("username",username);
            formData.append("password",password);            

 

 

axios:对原生的ajax的一个封装,独立

特点:发送的get请求,如果带参,还是一个默认的一文档流发送,和之前的任何一种请求方式没有任何不同;

但是如果发送的是post请求,会把文档流转成json串再传送给后台;

而那个方法只认识文档流默认字符串,所以想要接收axios中的post请求需要用缓冲字符输入流;

BufferReader reader = request.getReader();
String line = reader.readLine;

 

注意:但也不一定

一、get请求,后台没有对应的对象来封装,不能有私密数据。比如分页查询。

二、post请求,后台往往都是有对象跟着的,数据数据之间有关系,能够封装成对象。

 

标签:username,01,王佳齐,xhr,ajax,第四组,data,post,请求
From: https://www.cnblogs.com/yiboxh-10000/p/16647505.html

相关文章

  • VUE-01
    VUE简介1.什么是vue1.1.构建用户界面  官方给出的概念:Vue(读音/vju:/,类似于view)是一套用于构建用户界面的前端框架。用vue往html页面中填充数据,非常方便1.2.框......
  • 01-Flink概述
    1.源起和设计理念https://flink.apache.org/在Flink官网主页的顶部可以看到,项目的核心目标,是“数据流上的有状态计算”(StatefulComputationsoverDataStreams)。......
  • 2022-08-30 第四组 王佳齐 学习笔记
    JavaWEB路径匹配/hello.do拓展名匹配*.do默认匹配,缺省匹配/使用路径匹配:必须有/,如果使用的是扩展名匹配:必须不能有/,路径匹配和扩展名无法同时设置面试题:/和/的区别......
  • 2022-08-31 第四组 王佳齐 学习笔记
    <c:forEach begin="1" end="10" step="2" var="i" varStatus="stat">        \({i} ----- \){stat.first}     </c:forEach>刘夜壶  21:41:27JS......
  • 在VS2019中配置OpenGL环境。(使用CMake方法)
    网上一大堆VS下配置OpenGL环境的,但是这些方法都是基于VS空项目,并没有利用Cmake来构建。而我之前的代码都是在Linux下使用cmake构建,所以为了更快的在VS下调试运行我的程序,所......
  • 雅礼集训 2018 Day1
    「雅礼集训2018Day1」树首先发现这个期望是诈骗,我们只需要求出\(g_i\)表示深度为\(i\)的树的个数然后带权除以总方案数即可。树的题目容易想到一个子树一个子树抠出来,......
  • J [NOIP2013]货车运输 lca 最大生成树 点和点之间所有路径最小值的最大值
     链接:https://ac.nowcoder.com/acm/problem/16527来源:牛客网题目描述A国有n座城市,编号从1到n,城市之间有m条双向道路。每一条道路对车......
  • LG3565 [POI2014]HOT-Hotels 题解
    P3565[POI2014]HOT-Hotels给定一棵树,在树上选\(3\)个点,要求两两距离相等,求方案数。原题数据范围\(n\leq5000\),可做到线性,空间\(62.5\text{MB}\)。sub1\(n\leq......
  • PAT甲级——1001 A+B format 千位分隔符
    题目描述:输入a和b,要求输出ab之和,要用xx,xxx,xxx格式输出分析三位一个逗号这种格式就是所谓的千位分隔符千位分隔符的特点在于:对于每一个逗号,其后面的数字个数都是3的整......
  • leetcode 1019. 链表中的下一个更大节点 js实现
    给定一个长度为 n 的链表 head对于列表中的每个节点,查找下一个更大节点的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值严格大于它的值。返回......