JavaWeb13(ajax01)

news2024/11/29 0:56:40

目录

一. 什么是ajax

二.为什么需要AJAX?

三. 同步和异步的区别.

四.基于jQuery实现AJAX语法

4.1 语法1-$.ajax(url,[settings]).

4.1 语法2-$.get/post(url, [data], [callback], [type]).

五 .案例

5.1 ajax实现登录

①html代码

用户登录

        

用户名:

        

密码   :

        

                    

    

 ②ajax请求

③底层代码

5.2 使用ajax优化"修改数量"操作

①html代码

 ②ajax请求

 ③底层代码

 5.3使用ajax优化"加入购物车"操作

①ajax请求

②底层代码 


一. 什么是ajax

   Ajax即Asynchronous Javascript And XML(异步JavaScript和XML),使用Ajax技术网页应用能够快速地将更新呈现在用户界面上,而不需要重载(刷新)整个页面【只刷新局部】,这使得程序能够更快地回应用户的操作。

二.为什么需要AJAX?

  • 在我们之前的开发,每当用户向服务器发送请求,哪怕只是需要更新一点点的局部内容,服务器都会将整个页面进行刷新,这么做的问题有两点:

    • 性能会有所降低(一点内容就需要刷新整个庞大的页面);

    • 用户的操作页面会中断(整个页面被刷新了)。

  • 而基于ajax可以使用Javascript技术向服务器发送异步请求,因为异步请求,这可以使我们在不刷新页面的前提下拿到后端数据,完成页面的局部刷新,给用户的感受是在不知不觉中完成请求和响应过程。

三. 同步和异步的区别.

同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;

异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

四.基于jQuery实现AJAX语法

4.1 语法1-$.ajax(url,[settings]).

url:一个用来包含发送请求的URL字符串;

type:请求方式 (“POST” 或 “GET“[默认])

data:发送到服务器的数据,例如:key1=value1key2=value2 或 {key1: 'value1', key2: 'value2'} ;

dataType:期望服务器返回的数据类型(json、text、xml、html、script......);

success(data):请求成功的回调函数   data:服务器返回的数据(响应);

error:请求失败的回调函数。

4.1 语法2-$.get/post(url, [data], [callback], [type]).

url:发送请求地址。

data:待发送 Key/value 参数。例如: {key1: 'value1', key2: 'value2'}

type:预期服务器返回的数据类型,xml, html, script, json, text......

callback:发送成功时回调函数。

五 .案例

5.1 ajax实现登录

①html代码

<div>
        <h2>用户登录</h2>
        <p>用户名:<input type="text" id="sname"></p>
        <p>密码&nbsp;&nbsp;&nbsp;:<input id="spwd" type="text"></p>
        <p>
            <input type="button" value="登录" id="btn">
        </p>
    </div>

 ②ajax请求

    <script type="text/javascript">
        $(function() {
             //拿到按钮给其加点击事件
            $("#btn").click(function() {
                //拿文本框和密码框的值
                var name=$("#sname").val();
                var pwd=$("#spwd").val();
                //发起ajax请求
                /*//一.$.ajax()
                $.ajax({
                    url:"login.do",//请求路径
                    type:"post",//请求方式 get默认
                    data:{uname:name,upwd:pwd},//"uname="+name+"&upwd="+pwd, 提交到服务器的数据
                    dataType:"text",//预期服务器可能返回的数据类型
                    success:function(data){//成功的回调函数
                        //data:后台的响应 yes/no
                        if(data=="yes"){//登录成功
                            alert("恭喜你,登录成功");
                           location.href="index.jsp";
                        }
                        else{
                            alert("用户名或者密码有误");
                            $("#sname").val("");
                            $("#spwd").val("");
                        }
                    },
                    error:function(){//失败的回调函数
                        alert("有误");
                    }
                
                }); */
                
                //二.$.get/post()
                $.post("login.do",{uname:name,upwd:pwd},function(data){
                    if(data=="yes"){//登录成功
                        alert("恭喜你,登录成功");
                       location.href="index.jsp";
                    }
                    else{
                        alert("用户名或者密码有误");
                        $("#sname").val("");
                        $("#spwd").val("");
                    }
                },"text");
                
            });
            
            
        });
    
    </script>

③底层代码

@WebServlet("/login.do")
public class LoginServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html; charset=UTF-8");
        
        //拿session和out
        HttpSession session = req.getSession();
        PrintWriter out = resp.getWriter();
        
        //获取用户名和密码
        String uname = req.getParameter("uname");
        String upwd = req.getParameter("upwd");
        
        //servlet调biz层
        IUserBiz iub = new UserBiz();
        //调用登录方法
        User u = iub.login(uname, upwd);
        //判断是否成功
        if(u!=null) {
            //存session
            session.setAttribute("user", u);
            //把响应输送到前端 如果要跳转页面交给前端
            out.print("yes");
        }
        else {
            out.print("no");
        }
        
    }
}
 

5.2 使用ajax优化"修改数量"操作

①html代码

 ②ajax请求

 

 ③底层代码

 5.3使用ajax优化"加入购物车"操作

小Tips:

 

①ajax请求

   
        <script type="text/javascript">
            function myf(gid,user) {
                if(user){//有值 登录了
                //alert("亲,已成功加入购物车");
                    //location.href="addCart.do?gid="+gid;
                    
                    //发起ajax请求
                    $.post("addCart.do",{gid:gid},function(data){
                        alert(data);
                    });
                
                }
                else{//没有值  没有登录
                    alert("亲,你还没有登录,请先登录");
                    //location.href="login.jsp";
                }
            }
        </script>

②底层代码 

    
         //把这个集合存到session
        session.setAttribute("mycart", ls);//键  值
        //跳转到购物车界面绑值
      resp.sendRedirect("cart.jsp?index=5");
        
        //把响应返回前端
        out.write("【"+goods.getGname()+"】已成功加入购物车");
        

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

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

相关文章

Linux安装VNC(Linux桌面版远程)

一、Linux安装VNC服务 适用于CentOS7 #检查系统没有装GUI界面 rpm -qa | grep gnomeyum -y groupinstall "X Window System" yum -y groupinstall "GNOME Desktop"#安装VNC yum install tigervnc tigervnc-server -y检查开机运行级别 systemctl get-defa…

Shell脚本攻略:数组

目录 一、理论 1.数组概述 2.定义数组 3.数组打印 4.数组的数据类型及处理 5.数组赋值 6.数组遍历 7.数组切片 8.数组替换 9.删除数组 10.追加数组中的元素 11.数组排序算法 二、实验 1.实验一 2.实验二 3.实验三 一、理论 1.数组概述 数组是Shell的一种特殊变…

MySQL InnoDB缓存池

缓存池的作用 缓存表数据与索引数据&#xff0c;把磁盘上的数据加载到缓冲池&#xff0c;避免每次访问都进行磁盘IO&#xff0c;起到加速访问的作用。 为什么不把所有数据放到缓冲池中 凡事都具备两面性&#xff0c;抛开数据易失性不说&#xff0c;访问快速的反面是存储容量…

MongoDB 基本概念

MongoDB 部署模型 在生产环境中&#xff0c;MongoDB 经常会部署成一个三节点的复制集&#xff0c;或者一个分片集群。 我们先来看左边&#xff0c;当 MongoDB 部署为一个复制集时&#xff0c;应用程序通过驱动&#xff0c;直接请求复制集中的主节点&#xff0c;完成读写操作。另…

前端学习(DAY51)面试1

组件中的 data 为什么是一个函数&#xff1f; 如果 data 是对象的话&#xff0c;当数据改动时就会影响到所有的实例&#xff0c;可能会造成一些数据的冲突。 HTTP http&#xff1a;以安全为目标的http通道&#xff0c;HTTPs是以安全为目标的https通道&#xff08;使用SSL进…

Linux--ServerProgramming--(3)详解高性能服务器程序框架

1. 服务器框架详解 1.1 服务器模型 1.1.1 C/S 模型 此模型很简单&#xff0c;就是服务器和客户端。 此模型 非常适合资源相对集中的场合。 缺点&#xff1a;因为服务器是通信的中心&#xff0c;当访问量过大时&#xff0c;可能所有的客户都将得到很慢的响应。此缺点可由 P2P…

利用PHP导出MySQL数据表结构和SQL文件

目录 一、获取数据库所有的数据表 方法一&#xff1a;TP5 方法二:原生PHP 二、导出指定数据表的数据结构 三、 导出SQL文件 四、生成SQL语句 五、完整代码 前端 后端 语言&#xff1a;PHP 数据库&#xff1a;MySQL 功能&#xff1a;分为四部分&#xff0c;① 查出数…

智大数据比赛的总结

强国杯个人赛一定要报 hive 和hadoop基础环境配置 开启单节点集群环境 (0 / 10 分) 本次使用环境为单节点集群,对应主机名为hadoop000,使用工具连接对应主机并进行相关操作。 环境中已经安装java、Hadoop、Hive、Mysql并配置对应环境变量,安装路径为/root/software/,对应…

通过python采集关键字搜索1688工厂数据接口,1688工厂数据接口,1688API接口

1688是一个行业网站&#xff0c;主要提供中小型批发和生产商的信息&#xff0c;是中国供应商向全球采购商展示其产品的平台。在1688上&#xff0c;可以找到许多工厂和制造商的信息&#xff0c;包括公司名称、地址、联系人、联系方式、主要产品等。 采集1688工厂数据可以帮助采…

MySQL数据库 2.启动与停止

目录 ​编辑 &#x1f914; 启动与停止&#xff1a; &#x1f642;1.WIN加R调用windows命令行&#xff0c;输入&#xff1a;services.msc &#x1f642;2.可以在cmd&#xff08;管理员模式&#xff09;中输入以下指令&#xff1a; &#x1f914; 启动MySQ后的操作步骤&…

linux安装tomcat8

1.tomcat8下载 https://tomcat.apache.org/download-80.cgi 2.tomcat8安装 &#xff08;1&#xff09;将tomcat jar上传到usr/local目录 &#xff08;2&#xff09;解压tomcat压缩包 [rootiZ2ze7vthdl3oh0n0hzlu7Z local]# tar -zxvf apache-tomcat-8.5.58.tar.gz&#x…

开发小程序过程中的兼容难题,应当何去何从?

如今小程序开发已经成为了互联网行业发展的主流&#xff0c;而小程序开发过程中的兼容难题也让许多开发者感到头疼。那么小程序开发过程中兼容问题究竟有哪些&#xff0c;该如何解决&#xff1f;下面我们就针对这个问题展开一下分析。 什么是小程序&#xff1f; 小程序是一种无…

为什么魂斗罗只有 128KB 却可以实现那么长的剧情

经常看到有同学在抱怨现在的游戏、APP占用非常大的空间&#xff0c;基本都是 10G 起步。 这让我想到初中时玩过的一款游戏魂斗罗&#xff0c;为什么它只有 128KB 却可以实现那么长的剧情呢&#xff1f;这篇文章将会给大家讲讲这里面的奥秘~ 正文 现代程序员 A 和 1980 年代游戏…

小程序安装Vant Weapp详细步骤,下载和npm安装版

小程序安装Vant Weapp详细步骤 使用npm下载1、新建项目并初始化项目2、下载Vant Weapp3、修改 app.json4、构建 npm 包5、引入组件 下载方式1. npm下载或者下载[官方示例](https://github.com/youzan/vant-weapp)2. 把里面的dist文件夹复制出来&#xff0c;放到项目的根目录&am…

MKS SimpleFOC ESP32 例程7 双电机电流控制

Makerbase ESP32 FOC 例程7 双电机电流控制 第一部分 硬件介绍 1.1 硬件清单 序号品名数量1ESP32 FOC V1.0 主板12ARDUINO UNO主板23MKS SF2804电机1412V电源适配器15USB 线1 注意&#xff1a;YT2804是改装的云台无刷电机,带有AS5600编码器&#xff0c;可实现360连续运转。…

恒流间歇滴定法(GITT)测试锂离子电池的实验流程

恒流间歇滴定法&#xff08;GITT&#xff09;测试锂离子电池的实验流程 锂电池作为现代电子设备中最常用的电源之一&#xff0c;其性能和安全性对于设备的正常运行至关重要。恒电流间歇滴定法是一种常用的测试方法&#xff0c;用于评估锂电池的容量、循环寿命和内阻等关键参数。…

黄色荧光染料:1811539-32-8,JF549,NHS,JaneliaFluor549,SE,JF549琥珀酰亚胺酯

【产品描述】 Janelia Fluor549&#xff0c;SE是一种黄色荧光染料&#xff0c;作为NHS酯提供&#xff0c;用于连接伯胺基。NHS酯部分可以与伯胺特异有效地反应&#xff0c;形成共价酰胺键。NHS活化酯是生物标记反应中常用的活化基团。NHS活化TAMRA分子中的羧基&#xff0c;让它…

Ubuntu pwn环境搭建

文章目录 前言环境准备系统安装安装VMtoolsapt换源安装pip并换源安装pwntools安装gdb插件安装one_gadget安装 LibcSearcher 后记参考 前言 重新装了一下pwn环境&#xff0c;踩到了好多坑&#xff0c;顺便记录一下 环境准备 ubuntu 20.04&#xff0c;可以到镜像站下载&#x…

[CTFTraining] 0CTF 2016 Unserialize

​ 打开环境后是这样&#xff1a; ​ 找了挺多地方没啥头绪&#xff0c;干脆直接上dirsearch&#xff1a; ​ 发现有源码泄露&#xff0c;直接下载下来分析。先进行自动审计&#xff1a; ​ 发现有疑似的漏洞&#xff0c;但根据题目来看是反序列化的&#xff0c;还是要自行进…

月报总结|Moonbeam 5月份大事一览

本月&#xff0c;Moonbeam迎来了Uniswap V3的部署&#xff0c;经过一年的社区讨论&#xff0c;UniSwap V3终于以5000万个同意票通过&#xff0c;将在未来一个月内部署于Moonbeam&#xff0c;为Web3用户提供更广泛公链生态的多链体验&#xff0c;加速应用之间跨链交互&#xff0…