JavaWeb13(ajax01 AJAX介绍AJAX登陆AJAX加入购物车AJAX修改购物车商品数量)

news2024/11/26 22:44:22

目录

一. 什么是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/608181.html

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

相关文章

【无功优化】基于改进教与学算法的配电网无功优化【IEEE33节点】(Matlab代码时候)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

揭秘照片修复技巧:手把手教你如何让模糊照片变清晰

作为一名修图小能手&#xff0c;行走于修图界&#xff0c;修复模糊的照片是必备的技能之一&#xff0c;最近收到很多粉丝的私信&#xff0c;清一色都是问的怎么免费把照片变清晰&#xff0c;为了给各位小伙伴们解决难题&#xff0c;我决定拿出我私藏多年的秘密武器&#xff0c;…

【CloudCompare教程】016:计算点云的法向量

本文讲解CloudCompare计算点云的法向量的方法。 文章目录 一、法向量概述二、法向量计算1. 平面法向量2. 二次曲面3.三角网格化一、法向量概述 法向量,是空间解析几何的一个概念,垂直于平面的直线所表示的向量为该平面的法向量。法向量适用于解析几何。由于空间内有无数个直…

HAL库记录-RTC

芯片:STM32F29IIGT6 阿波罗开发板 1.配置时钟 2.HAL外设配置 3.代码解析 生成rtc文件 RTC_HandleTypeDef hrtc;/* RTC init function */ void MX_RTC_Init(void) {/* USER CODE BEGIN RTC_Init 0 */RTC_TimeTypeDef rtc_time;RTC_DateTypeDef rtc_data;/* USER CODE END RTC…

node笔记_生成自定义目录文件

文章目录 ⭐前言⭐node生成目录&#x1f496; mkdirSync创建目录&#x1f496; stat判断目录是否存在&#x1f496; mkdir创建目录&#x1f496; 动态创建目录文件 ⭐结束 ⭐前言 大家好&#xff01;我是yma16&#xff0c;本文分享node生成自定义目录文件。 背景&#xff1a; …

chatgpt赋能python:Python中去掉数字末尾的0:一种简单有效的方法

Python中去掉数字末尾的0&#xff1a;一种简单有效的方法 Python作为一种流行的编程语言&#xff0c;经常被用于各种应用程序的编写。在这篇文章中&#xff0c;我们将介绍如何使用Python去掉数字末尾的零的一种简单有效的方法。 为什么要去掉数字末尾的0&#xff1f; 对于数…

【工具使用】STM32CubeMX-GPIO配置

一、概述 无论是新手还是大佬&#xff0c;基于STM32单片机的开发&#xff0c;使用STM32CubeMX都是可以极大提升开发效率的&#xff0c;并且其界面化的开发&#xff0c;也大大降低了新手对STM32单片机的开发门槛。     本文主要讲述STM32芯片的GPIO的配置及其相关知识。GPIO…

(转载)基本粒子群算法及惯性权重分析(matlab实现)

1 理论基础 粒子群算法(particle swarm optimization,PSO)是计算智能领域&#xff0c;除了蚁群算法、鱼群算法之外的一种群体智能的优化算法。该算法最早由Kennedy和Eberhart在1995年提出的。PSO算法源于对鸟类捕食行为的研究&#xff0c;鸟类捕食时&#xff0c;找到食物最简单…

一零五九、Windows系统(amd)通过VMware安装黑苹果

我来详细的说一下过程&#xff1a; 配置&#xff1a; windows amd锐龙VMware 16.0 &#xff08;16.1.0 build-17198959&#xff09;macos 11.1unlocker(工具&#xff0c;让虚拟机支持引导苹果系统) 总体步骤&#xff1a; 下载iso镜像和unlocker工具,这里提供两个链接&#…

Spring Cloud Alibaba Nacos 构建配置中心

构建配置中心 新建命名空间 登录 Nacos 面板&#xff0c;依次点击左侧菜单栏【命名空间→新建命名空间】、填写命名空间名和描述信息&#xff0c;点击【确定】&#xff1a; 新建配置文件 依次点击左侧菜单栏【配置管理→配置列表】、切换到指定命名空间【此处为 shop】、点击…

MySQL中的CONCAT()函数和CONCAT_WS()函数

一、介绍 1. CONCAT() MySQL的CONCAT()函数用于将多个字符串连接在一起。它接受两个或多个字符串参数&#xff0c;并返回它们的连接结果。 示例&#xff1a; select concat("hello"," ","world") as concatenated_str; 执行结果&#xff1a…

基于SpringBoot的爱心家园服装捐赠系统

目录 1、项目介绍 2、项目技术 3、运行环境 4、项目介绍 5、项目代码 5、运行截图 6、源码获取 1、项目介绍 角色:管理员、用户 管理员:管理员登录系统后&#xff0c;可以对首页、个人中心、用户管理、捐赠记录管理、论坛管理、留言管理、心愿管理等功能进行相应的操作…

二、KeilMDK+STM32CubeMX建立工程_LED灯闪烁为例

1、开发环境 (1)KeilMDK&#xff1a;V5.38.0.0 (2)STM32CubeMx:V6.8.1 (3)MCU:STM32F407ZGT6 2、实验目的&原理图 2.1、实验目的 实现两个LED灯以500毫秒闪烁一次。 2.2、原理图 (1)LED阴极接GPIO&#xff0c;GPIO输出低电平&#xff0c;LED点亮&#xff1b;GPIO输…

【Python】列表 List ② ( 使用下标索引访问列表 | 正向下标索引 | 反向下标索引 | 嵌套列表下标索引 | 下标索引越界错误 )

文章目录 一、使用下标索引访问列表1、下标索引用法2、正向下标索引3、反向下标索引4、代码示例 - 列表下标索引基本用法 二、嵌套列表下标索引1、嵌套列表下标索引简介2、代码示例 - 嵌套列表下标索引 三、下标索引越界错误 一、使用下标索引访问列表 1、下标索引用法 在 Pyth…

java SSM 宠物寄养管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP SSM 宠物寄养管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采…

吐血整理,Selenium4自动化测试常用函数总结,各种场景操作实战...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Selenium4自动化测…

GC 调优(实战篇)

高分配速率(High Allocation Rate) 分配速率(Allocation rate)表示单位时间内分配的内存量。通常使用 MB/sec作为单位, 也可以使用 PB/year 等。 分配速率过高就会严重影响程序的性能。在JVM中会导致巨大的GC开销。 如何测量分配速率? 指定JVM参数: -XX:PrintGCDetails -X…

WPS小技巧:在word进行手写批注、观看版式、自动保存、检测拼写错误的单词。

手写批注&#xff1a; 在审阅中可以看到一个画笔功能 点开后可以进行手写批注&#xff1a; 观看版式&#xff1a; 在视图选项卡中可以看到各种不同的版式&#xff1a; 选择不同&#xff0c;表现效果也不同&#xff1a; 全屏显示&#xff1a; 阅读模式&#xff1a; 写作模式&am…

【白话机器学习系列】白话向量点积

白话向量点积 点积&#xff08;Dot Product&#xff09;是机器学习中最常见的向量操作。本文将通过简洁易懂的语言配合大量图形为大家介绍点积运算及其背后的数学意义。 文章目录 背景知识几何视角向量的大小Cosine举例几何意义 坐标视角两种视角的等价性点积的作用总结 背景…

GC 调优(基础篇)

GC调优(Tuning Garbage Collection)和其他性能调优是同样的原理。初学者可能会被 200 多个 GC参数弄得一头雾水, 然后随便调整几个来试试结果,又或者修改几行代码来测试。其实只要参照下面的步骤&#xff0c;就能保证你的调优方向正确: 列出性能调优指标(State your performan…